我想計算兩個時間點之間的平均CPU使用率。 我使用T1-t0和Process.TotalProcessorTime1之間的比率 - Process.TotalProcessorTime0 (其中t是實際DateTime.Now
在該點)Process.TotalProcessorTime超過實際的時間傳遞
但有時當計算機正忙於我得到在蜱的TotalProcessorTime差大於實際的時間(在Ticks中)通過,所以我的cpu%超過了100.
那怎麼可能?
long currentLogTime = DateTime.Now.Ticks;
long currentSPUUsageTime = _process.TotalProcessorTime.Ticks;
long timeDiff= currentLogTime - m_LastLogTime;
if (timeDiff != 0)
{
cpuUsage = (currentSPUUsageTime - m_LastCPUUsageTime) * 100/timeDiff;
}
亦稱免費午餐! – 2011-06-06 14:42:35
所以我應該除以機器中的處理器內核數量? – tsvikaw 2011-06-06 14:45:57
如果要計算已用處理器時間佔可用的最大處理器時間的百分比,則爲yes(除非您的進程僅限於機器邏輯處理器的某個子集)。 – phoog 2011-06-06 14:48:29