Использование процессора

Возможный дубликат:
Использование ЦП с использованием WMI и C#

Как получить процент использования ЦП в С# (.NET) с помощью WMI? Да без всяких дурацких PerformanceCounter.


person Lessneek    schedule 09.11.2010    source источник
comment
Возможный дубликат этого вопроса: stackoverflow.com/questions/721629/cpu-usage-using-wmi- с   -  person CodingGorilla    schedule 09.11.2010
comment
Почему PerformanceCounter глуп? Было бы полезно, если бы вы объяснили, почему это не подходит.   -  person Dirk Vollmar    schedule 09.11.2010
comment
Вместо использования дурацкого счетчика производительности вы можете использовать счетчик производительности использование процессора. Это даст вам лучшие результаты.   -  person Dr. belisarius    schedule 09.11.2010


Ответы (1)


PerformanceCounter — это очень недорогой способ получения этой информации. В отличие от WMI, который предоставит вам точную ту же информацию, но с большими накладными расходами, поскольку он работает поверх COM.

И у него та же проблема, что и у ПК, поэтому, я думаю, вы считаете его «глупым». Процент использования ЦП измеряется за интервал. Фактическое использование ЦП равно 0 или 100%, ЦП никогда не работает намеренно с более низкой скоростью. Он запускает код на полную мощность, когда есть поток, которому нужно поработать. Если нет работы, нормальное состояние вашего настольного компьютера, то ЦП выключается с помощью инструкции HLT. Он снова просыпается с прерыванием часов.

Процент использования ЦП, показанный в TaskMgr или Permon, является расчетным значением за одну секунду. Отношение количества времени, в течение которого он работал на 100 %, к количеству времени, в течение которого он был выключен. Длина интервала очень важна. Чем короче вы сделаете это, тем «прыгучее» будет вычисленное значение. Вплоть до вызова NextValue() дважды подряд вы всегда получите 100%.

Короче говоря, вам нужен таймер. Сделайте одну секунду, чтобы эмулировать то, что вы видите в PerfMon и TaskMgr.

person Hans Passant    schedule 09.11.2010