В Linux есть понятие средней нагрузки, которое определяется как:
Средняя загрузка системы - это среднее количество процессов, которые находятся в рабочем или непрерывном состоянии. Процесс в рабочем состоянии либо использует ЦП, либо ожидает использования ЦП. Процесс в непрерывном состоянии ожидает некоторого доступа к вводу-выводу, например ждет диска. Средние значения берутся за три временных интервала. Средние значения нагрузки не нормализованы для количества ЦП в системе, поэтому средняя загрузка 1 означает, что система с одним ЦП загружена все время, а в системе с 4 ЦП это означает, что она простаивает 75% времени.
Какой ближайший эквивалент доступен через WMI? Существуют ли принципиальные различия между двумя ОС, которые определяют, как следует измерять такую метрику производительности? Какие отличия?
В Process Queue Length
считать от System
Объект счетчика производительности:
Длина очереди процессора - это количество потоков в очереди процессора [...]
Это значение доступно в WMI через Win32_PerfFormattedData_PerfOS_System
.
Я не знаю какой-либо такой меры общей рабочей нагрузки, это просто процентное соотношение ЦП с некоторой разбивкой по типам требуемых ЦП. Это действительно затрудняет понимание того, насколько перегружена машина. Когда система Linux сообщает о средней нагрузке 63, а система Windows сообщает о 100% ЦП ... ну, они оба работают на пределе, но это все, что вы можете сказать о системе Windows.
Я не уверен, что в окнах есть что-то эквивалентное, и я не уверен, что это что-то значило бы, если бы они были. Из описания я не вижу, как процесс не может быть включен, поскольку даже зависший или приостановленный процесс будет выделять процессорное время. Кроме того, более уместно смотреть на потоки и выполняемые потоки, а не на процессы под окнами, чтобы определить какое-либо понятие нагрузки по предоставленному определению.
Вы можете получить мгновенный Загрузка процессора в процентах с помощью этой команды:
wmic cpu get loadpercentage
Что возвращает:
LoadPercentage
10
К сожалению, я не вижу времени средние из wmic cpu get
, что было бы неплохо.
Если вы используете Python, psutil эмулирует getloadavg () в Windows через длину очереди процессора:
>>> import psutil
>>> psutil.getloadavg()
(3.14, 3.89, 4.67)
PR, показывающий, как это делается: https://github.com/giampaolo/psutil/pull/1485