Создатель оригинального «Task Manager» объяснил, почему он врет вам об использовании CPU

диспетчер задач Microsoft цп Windows инженер производительность tomshardware.com

Дэйв Пламмер заглядывает под капот Диспетчера задач и объясняет, как он определяет загрузку ЦП вашего ПК (и почему иногда кажется, что данные неверны). — tomshardware.com

Бывший инженер Microsoft Дэйв Пламмер, работавший над такими знаковыми проектами, как добавление поддержки ZIP-архивов в Windows и меню «Пуск» в Windows NT, рассказал, как на самом деле считывается загрузка ЦП Диспетчером задач. Пламмер создал оригинальный Диспетчер задач и сделал этот инструмент настолько простым (с точки зрения программирования и инженерии), чтобы он не расходовал ресурсы компьютера без необходимости. Однако были и жалобы на то, что иногда отображаемые им цифры казались не совсем точными, поэтому он объяснил, почему определение загрузки ЦП — довольно сложная задача, как Диспетчер задач получает данные об утилизации ЦП и почему он может показывать результаты, немного отличающиеся от того, что вы видите и ощущаете на своем ПК. «Но измерение загрузки ЦП, казалось бы, должно быть одной из самых простых задач в вычислениях — я имею в виду, либо ЦП занят, либо нет, верно? Это кремний, а не интерпретируемый танец. Конечно, вы просто спрашиваете Windows: „Эй, насколько ты занята?“ — и она сообщает вам 73%, а затем мы все идем домой пораньше — только вот ничего из этого неправда», — сказал Пламмер. «Потому что первый неудобный вопрос: „Занята чем, собственно?“ Занята одним ядром или всеми? Занята прямо сейчас, или усредненное значение за последнюю секунду или две, или как часто просыпается ваш интерфейс? Занята в пользовательском режиме или в режиме ядра, или временем прерывания, или отложенными процедурными вызовами, или циклом простоя, или каким-то странным учетным „ведром“, которое существует только потому, что планировщику нужно было куда-то передать счет? И как только вы начинаете задавать эти вопросы, то, что выглядит как простой спидометр, начинает походить на криминалистический учет».,Дэйв говорит, что Диспетчер задач управляется таймером, обновляясь время от времени, чтобы предоставить вам обновленное значение. Это показывает, что машина отображает интерпретацию того, что произошло с вашим ПК между обновлениями, а не представление об фактическом использовании ЦП в реальном времени. Простым ответом было бы разделить использование ЦП на время, прошедшее между обновлениями, но Пламмер утверждает, что это зависит от точного срабатывания таймера графического интерфейса. Он сравнил это с «доверием к метроному, который должен оставаться идеально ровным, пока он едет на заднем борту пикапа по грунтовой дороге, усеянной выбоинами».,Вместо этого он запрограммировал Диспетчер задач запрашивать общее время, то есть сумму времени ядра и пользовательского времени, каждого процесса с момента его запуска. Затем он вычитает последнее общее значение, полученное во время последнего обновления для этого конкретного процесса, из этого значения, чтобы получить его потребление ЦП за этот период. Затем это число делится на общее время ЦП, которое было учтено и потреблено всеми процессами между обновлениями. Хотя это может показаться сложным по сравнению с простым делением общего использования ЦП на прошедшее время между обновлениями, это решение гораздо точнее.,Однако технологические достижения заставили это казаться неточным. Поскольку учет представляет собой просто среднее число, между состояниями обновления оно не учитывает фактическую работу, происходящую в определенный момент. «Современное использование ЦП больше похоже на то, насколько заполнено шоссе, а не на то, сколько миль фактически пройдено. Полупустое шоссе с Феррари на нем может пропустить гораздо больше трафика, чем забитое шоссе, полное старых цементовозов», — объяснил Пламмер. «Старый Диспетчер задач создавался в эпоху, когда затраченное время было довольно хорошим прокси-показателем выполненной работы. Но на современных процессорах с динамическим масштабированием частоты, Turbo Boost, тепловым троттлингом, глубокими состояниями простоя эта связь стала намного слабее. Так что, когда цифры кажутся немного скользкими, это не потому, что инструмент сломан, а потому, что аппаратное обеспечение перестает быть достаточно простым, чтобы один процент мог рассказать вам всю историю».,Он также добавил примечание на экране: «Если бы я был королем… загрузка ЦП должна быть мерой выполненной работы по сравнению с теоретическим максимальным объемом работы, который МОГ БЫ быть выполнен». Но поскольку он уже ушел из Microsoft, он, вероятно, больше не имеет никакого влияния на то, как должна работать Windows.,Вы можете найти еще несколько интересных историй и объяснений о том, как работает один из самых базовых инструментов Windows, в видео на Dave’s Garage, встроенном выше.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Похожие новости: