Создатель оригинального Диспетчера задач в Windows объяснил, почему инструмент "врёт" о загрузке процессора

Бывший инженер Microsoft Дэйв Пламмер, приложивший руку к поддержке ZIP-файлов в Windows и меню "Пуск" в Windows NT, рассказал, как его детище на самом деле считывает загрузку CPU. Разработчик намеренно сделал Диспетчер задач максимально простым, чтобы тот не расходовал лишние ресурсы системы, но пользователи годами замечали, что цифры выглядят странно.

По словам инженера, сама задача звучит тривиально – либо процессор занят, либо нет. На практике всё упирается в вопрос "занят чем именно", и именно здесь простой спидометр превращается в подобие бухгалтерской экспертизы. За одной цифрой на экране скрывается сразу несколько плоскостей измерения:

  • загрузка одного ядра или всех сразу

  • текущий момент или усреднение за секунду-две

  • пользовательский режим, режим ядра или время обработки прерываний

  • отложенные процедурные вызовы и цикл простоя

  • служебные учётные категории планировщика

https://www.youtube.com/watch?v=HiHMQN3kQlQ

Диспетчер задач работает по таймеру и показывает не реальную картину в моменте, а интерпретацию того, что происходило между обновлениями. Очевидное решение (поделить загрузку на прошедшее время) требует идеально точного срабатывания GUI-таймера, а на это полагаться нельзя. Пламмер сравнил такой подход с попыткой заставить метроном держать ритм в кузове пикапа на разбитой грунтовке.

Вместо этого инженер заложил другую логику. Утилита запрашивает суммарное время каждого процесса с момента запуска, то есть сумму времени в режиме ядра и в пользовательском режиме, и вычитает из него показатель прошлого обновления. Получившееся значение делится на общее процессорное время, потреблённое всеми процессами за тот же отрезок – схема сложнее, но заметно точнее прямого деления.

Проблема в том, что усреднение между обновлениями перестало отражать реальную работу процессора. Современные чипы с динамическим масштабированием частоты, Turbo Boost, тепловым троттлингом и глубокими состояниями простоя разорвали прежнюю связь между "потраченным временем" и "выполненной работой".

Полупустое шоссе с Ferrari пропускает куда больше трафика, чем забитая дорога со старыми цементовозами – такой аналогией инженер описал нынешнее поведение CPU.

Сам Пламмер считает, что загрузка процессора должна измеряться как отношение реально выполненной работы к теоретическому максимуму, который железо могло бы выдать. Правда, повлиять на Windows разработчик уже не может, ведь он давно вышел на пенсию из Microsoft.

Больше статей на Shazoo
Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.