Экс-сотрудник Microsoft Дэйв Пламмер (Dave Plummer), автор классического Диспетчера задач Windows, рассказал, по какой причине этот инструмент не может отображать нагрузку на центральный процессор (ЦП) мгновенно и каким образом он вычисляет данный параметр. Как пояснил программист, архитектура Диспетчера задач изначально была сделана максимально простой, но с появлением у процессоров динамического изменения частоты и технологии Turbo Boost он утратил способность точно оценивать фактическую вычислительную нагрузку.
Источник изображения: @DavesGarage / youtube.com
Принцип работы Диспетчера задач основан на таймере: через установленные интервалы он обновляет данные, показывая усреднённую картину того, что происходило с системой между двумя соседними замерами, а не сиюминутную загрузку ЦП. Казалось бы, логичным решением было бы разделить нагрузку на длительность интервала, но для этого требуется, чтобы графический таймер срабатывал абсолютно точно, чего на практике добиться невозможно.
Пламмер выбрал иной подход: программа запрашивает общее время работы каждого процесса — сложение времени, проведённого в режиме ядра и в пользовательском режиме — с момента его запуска. Из текущего значения вычитается результат предыдущего запроса для этого же процесса, а затем полученная разница делится на общее процессорное время, потраченное всеми процессами за период между обновлениями. Этот метод более сложный, но зато и более точный.
Однако техническое развитие свело на нет даже эту методику. Поскольку расчёт строится на усреднённых данных между обновлениями, он не способен отразить реальную работу, выполняемую в данный конкретный момент. На современных процессорах с динамическим изменением частоты, Turbo Boost, тепловым троттлингом и глубокими состояниями энергосбережения связь между затраченным временем и фактически выполненной работой значительно ослабла.
С точки зрения разработчика, правильным показателем было бы не процентное соотношение занятого времени, а отношение реально выполненной работы к теоретически максимально возможной производительности. Но повлиять на воплощение этой идеи Пламмер уже не в силах: он покинул Microsoft, выйдя на пенсию.