2012-03-07 20 views
6

Sto cercando un modo migliore per ottenere il carico della CPU in percentuale con WMI da più sistemi (significa diverse CPU, ecc.). Il mio codice funziona, ma penso che ci sia un modo migliore per superare l'utilizzo della CPU in percentuale.Query WMI - CPU LoadPercentage

Qualche idea?

Grazie in anticipo!

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); 

risposta

4

Personalmente preferisco la classe Win32_PerfRawData_PerfOS_Processor perché è molto più preciso. Sarà necessario interrogare sia PercentProcessorTime e TimeStamp_Sys100NS. Here puoi trovare la formula esatta.