Я наблюдаю процент загрузки моего процессора процессом. Как процесс использует только 50% процессора? Разве процесс не использует 100%, затем 0%, а затем 100%? Это не как любая другая инструкция, это другая программа.
performance
cpu
.net-framework
Энтони Д
источник
источник
Ответы:
Это только итоги опросов примерно один раз в секунду. Вы смотрите, сколько из последней секунды он использовал.
Если вы видите, что процессор некоторое время находится на уровне 50%, вероятно, он использует 100% одного процессора в системе с двумя процессорами.
источник
Технически вы правы. В любой момент времени ЦП либо используется, либо не используется. Но отображать это на графике было бы не очень полезно, поэтому график усредняет загрузку ЦП за некоторый период времени, возможно, каждую секунду.
источник
ОС планирует процесс на определенный период времени. Таким образом, если процесс запланирован на (скажем) 1 мс из 10 мс, то он будет использовать 10% ЦП.
Это немного нелогично, поскольку (в однопоточной однопроцессорной системе) процесс либо запущен, либо не запущен. то есть он использует 100% или 0%. Процент, который вы видите, измеряется по временному окну и является мерой ОС, выделяющей временные интервалы вашему процессу для запуска.
Обратите внимание, что ваш процесс не будет способствовать этому, если вы обращаетесь к I / O. Так что, если вы делаете огромный расчет, вы зарегистрируетесь на 100% (при условии, что больше ничего не выполняется). Если вы затем дождетесь доступа к сетевому пакету / диску и т. Д., Ваш ЦП снизится, несмотря на то, что ваш процесс все еще работает.
источник
На очень низком уровне вы в основном правы. В любой данный момент процессор либо выполняет инструкцию для данного процесса, либо нет.
Но ваша ОС находится между вашими процессами и процессором, заставляя их делить время. Процент, который вы видите, представляет собой процент недавнего времени обработки, предоставленного ОС этому процессу.
источник
Это основано на среднем времени. Несмотря на то, что все потоки могут иметь одинаковую частоту процессорного времени (в зависимости от приоритета), потоки могут просто сказать «спасибо, но я бездействую» и передать свою очередь следующему потоку. Вот почему программы не всегда используют один и тот же% времени, а большинство программ потребляют 0% ЦП, а программы, которые действительно нуждаются в ЦП, могут занимать около 100% времени для себя.
Почему он ограничен 50%? У вас, вероятно, два ядра процессора, и оно использует только одно.
Или, как предполагается, он использует гиперпоточность, но я не знаю, как именно он себя ведет.
источник
Ваша программа может выполнять много операций ввода-вывода (чтение или запись на диск или сеть). Это будет держать программу занятой, но не потребует много времени процессора.
источник
Использование системы выбирается и усредняется, что является единственно разумным решением.
Например, запись того, сколько времени процесс / поток провел в течение 1 секунды. Если он потратил 1 секунду на ЦП, это 100% ЦП (или 50%, если у вас 2 ЦП и т. Д.), Если он потратил 100 мс, это 10% загрузки ЦП.
источник