2012-03-07 21 views
6

Estoy buscando una mejor manera de obtener la carga de la CPU en porcentaje con WMI desde varios sistemas (significa diferentes CPU, etc.). Mi código funciona, pero creo que hay una mejor manera de superar el uso de la CPU en porcentaje.consulta WMI - CPU LoadPercentage

¿Alguna idea?

¡Gracias de antemano!

SelectQuery queryCpuUsage = new SelectQuery("SELECT * FROM Win32_Processor"); 
ManagementObjectSearcher cpuUsage = new ManagementObjectSearcher(scope, queryCpuUsage);          
ManagementObjectCollection cpuUsageCollection = cpuUsage.Get();              

foreach (ManagementObject queryObj in cpuUsageCollection) 
{           
iCPU++; 
calcCPU = Convert.ToInt32(queryObj["LoadPercentage"]); 
perCPU = perCPU + calcCPU; 
} 

perCPU = perCPU/iCPU; 

cpuUsageCollection.Dispose(); 

Console.WriteLine("LoadPercentage CPU: {0}", perCPU); 

Respuesta

4

Personalmente me gustaría ir para la clase Win32_PerfRawData_PerfOS_Processor porque es mucho más precisa. Deberá consultar PercentProcessorTime y TimeStamp_Sys100NS. Here puede encontrar la fórmula exacta.