示例#1
0
        public SensorsProcessOutput GetCurrentSensorsProcessReadings()
        {
            var output = new SensorsProcessOutput()
            {
                Cpus_Temp  = new HashSet <CpuTemperatureInformation>(),
                Fans_Speed = new HashSet <FanSpeedInformation>()
            };

            using (var sensors_process = Process.Start(_sensorsProcessStartInfo))
            {
                var    stream   = sensors_process.StandardOutput;
                string line     = null;
                Regex  reg      = new Regex(@"\s+", RegexOptions.Compiled);
                int    line_ctr = 0;

                while (!stream.EndOfStream)
                {
                    line = stream.ReadLine();
                    if (line_ctr >= 12 && line_ctr <= 17)
                    {
                        line = line.Trim();
                        var array_line = reg.Replace(line, ";").Split(";");
                        var cpuTemp    = new CpuTemperatureInformation()
                        {
                            Cpu_Id   = int.Parse(array_line[1].Substring(0, 1)),
                            Cpu_Temp = double.Parse((array_line[2].Substring(1)).Replace("°C", ""))
                        };
                        output.Cpus_Temp.Add(cpuTemp);
                    }

                    line_ctr++;
                }
            }
            return(output);
        }
 static void ManageNewData(TopProcessOutput usage_info, SensorsProcessOutput temperature_info, DateTime samplingTime)
 {
     InsertSamplingTime(samplingTime);
     InsertTemperature(temperature_info);
     InsertTotalUsages(usage_info);
     InsertProcessSpecificUsage(usage_info);
 }
        static void InsertTemperature(SensorsProcessOutput temperature_info)
        {
            double total_temps = 0;

            temperature_info.Cpus_Temp.ToList().ForEach(c => total_temps += c.Cpu_Temp);
            var cpu_temp = (total_temps / temperature_info.Cpus_Temp.Count());

            using (var context = new ServerResourcesContext())
            {
                context.Server_Resource_Info.Add(new Server_Resource_Info()
                {
                    Value                   = cpu_temp,
                    Sample_Time_FK          = context.Sample_Time.Last().Id,
                    Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "TEMP").SingleOrDefault().Id,
                    Process_FK              = null,
                    Resource_Type_FK        = context.Resource_Type.Where(RT => RT.Short_Name == "CPU_TEMP").SingleOrDefault().Id
                });;
                context.SaveChanges();
            }
        }