Почему время ЦП для процесса простоя системы увеличивается * быстрее *, чем настенные часы?

3

Мой компьютер прослужил 30 минут, но диспетчер задач показывает, что время ЦП для процесса простоя системы составляет 1:30 и более. Каждую секунду он продвигается еще на 3, а иногда и на 4 секунды.

Машина также работает, в это время очень медленно (хотя и не в целом).

Это актуальная Win 7 x64.

Почему процесс простоя системы быстрее, чем в режиме реального времени?

Gaia
источник

Ответы:

4

Можно вычислить использованное процессорное время, предполагая, что планировщик задач равномерно (или, по крайней мере, распределенным образом) распределяет задачи по всем ядрам следующим образом:

CPU Time = Application Time * Number of Cores * Average CPU Utilization

Процесс простоя системы - это просто оболочка для планировщика задач, когда ЦП не выполняет никакой работы, поэтому в случае, если в системе больше ничего не выполняется, это обычно имеет очень высокую загрузку. Предполагая, что у вас есть 4-ядерная система, и ваш процесс простоя занимает 95% процессорного времени, каждую секунду вы ожидаете, что время CPU простоя увеличится на:

CPU Time = (1 second) * (4 cores) * (0.95) = 3.8 seconds

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


Обратите внимание, что эта формула применима даже для однопоточных приложений, поскольку, если однопоточное приложение постоянно работает на 4-ядерном компьютере, максимальная загрузка процессора составит всего 25%; таким образом, время процессора для этого однопоточного приложения должно почти соответствовать в реальном времени:

CPU Time = (1 second) * (4 cores) * (0.25) = 1 second
Прорвать
источник
Всего лишь одно недоразумение: процесс бездействия - это не просто «оболочка для планировщика задач». Существует фактический незанятый поток, выделенный для каждого ЦП (или для каждого логического процессора, если у вас включен HT), и планировщик потока (а не «планировщик задач», то есть «запланированные задачи») действительно переключает контекст на него, когда ничего нет еще для процессора сделать. И при этом пустые потоки действительно ничего не делают; они помогают запускать ЦП других процессоров, уведомляют диспетчера питания о бездействии ядра и т. д.
Джейми Ханрахан,
6

Диспетчер задач показывает время процессора , а не в реальном времени.

Время ЦП - это время, которое было выделено данному процессу на любом доступном ЦП. Поэтому, если у вас четырехъядерная система, и вы запускаете процессы только на одном ядре, оставшийся процесс будет использовать оставшееся время на остальных трех ядрах.

Таким образом, вы получите использование процессора в течение 1 часа 30 минут в течение 30 минут безотказной работы.

Der Hochstapler
источник