Как вычисляется загрузка процессора?
Вопрос
Диспетчер задач Windows показывает загрузку процессора в процентах.Какая формула стоит за этим?Это из-за этого:
% загрузки процессора для процесса A = (Сумма всех временных интервалов, заданных для процесса A до настоящего времени)/ Общее время с момента загрузки компьютера
Или это что-то другое?
Решение
Я не уверен на 100%, что именно используется, но я думаю, что вы немного ошибаетесь в расчете процессора.
Я полагаю, что они делают что-то подобное.
Process A CPU Usage = (Cycles for A over last X seconds)/(Total cycles for last X seconds)
Я полагаю, что это связано с "интервалом обновления", установленным в диспетчере задач.
Однако, проведя для вас небольшое исследование, я обнаружил это MSDN статья, в которой показан рекомендуемый корпорацией Майкрософт способ вычисления процессорного времени набора инструкций, также может немного подтолкнуть вас к их вычислению.
Другие советы
Нет, это не "с момента загрузки" - это гораздо более чувствительно ко времени.
Это "доля времени, в течение которого центральный процессор активно запускал поток в этом процессе с момента последнего обновления".(Где частота обновления обычно составляет около секунды.) В диспетчере задач я полагаю, что затем она делится на количество процессоров, так что в итоге получается 100% (т.Е.на двухъядерном компьютере нагрузка на однопоточный процессор будет равна 50%).Другие подобные программы иногда этого не делают, выдавая в общей сложности 100% * ядер.
Возможно, вы также захотите проверить эта статья поскольку способ обработки циклов процессора в отношении планирования был изменен как часть Vista.Я предполагаю, что это также относится к Win7.
Смотрите исходный код диспетчера задач