Дэйв Пламмер, бывший инженер Microsoft и разработчик оригинального диспетчера задач Windows, сообщил в Интернете, что загрузка ЦП, отображаемая диспетчером задач Windows, представляет собой не данные в реальном времени, а периодическое среднее значение, которое регулярно обновляется.Пламмер участвовал в таких знаковых проектах, как поддержка ZIP-файлов Windows и меню «Пуск» Windows NT, а также он лично создал первую версию диспетчера задач.
Чтобы гарантировать, что этот инструмент не тратит впустую системные ресурсы, он разработал этот инструмент так, чтобы он был чрезвычайно простым с точки зрения программирования и разработки, чтобы он мог бесперебойно работать на компьютерах 1990-х годов. Но именно этот минималистичный дизайн закладывает основу для неточных числовых значений.
Пламмер сказал, что обновление диспетчера задач осуществляется по таймеру и собирает данные через регулярные промежутки времени. Он показывает статистику процессора между двумя обновлениями, а не нагрузку в реальном времени.
Если вы просто разделите время использования ЦП на интервал обновления, результат будет очень зависеть от точности таймера графического интерфейса.
Он провел аналогию: это все равно, что поставить метроном в кузов пикапа и ехать по выбоинной грунтовой дороге. Сохранить его абсолютно стабильным в принципе невозможно.
Поэтому он принял более строгий алгоритм: пусть диспетчер задач записывает общее время работы каждого процесса с момента запуска (время ядра + время пользователя), вычитает общее значение последнего обновления из текущего значения, чтобы получить потребление процессора процессом за интервал, а затем делит его на общее потребление процессора всеми процессами за этот период.
Этот метод выглядит очень сложным, но он гораздо точнее, чем непосредственное деление.
Однако развитие технологий делает этот алгоритм неадекватным. Современные процессоры поддерживают динамическую частотную модуляцию, турбоускорение, снижение частоты контроля температуры и глубокий сон, что отделяет использование времени процессора от фактической выполненной рабочей нагрузки. Один процент не может полностью отразить рабочее состояние процессора.
Пламмер отметил, что время использования процессора раньше хорошо отражало рабочую нагрузку, но теперь корреляция между ними очень слабая. Он считает, что идеальное использование ЦП должно измерять соотношение фактического объема выполненной работы к теоретическому максимальному объему работы, который может быть выполнен, но он ушел из Microsoft и не может продвигать изменения.
