в чем причина высокой загрузки ЦП?

334
user3198603

Для простоты, давайте рассмотрим, у меня есть одноядерный процессор. У меня есть 2 задачи, работающие параллельно. Насколько я понимаю, процессор будет выполнять задачи в циклическом режиме, то есть по одному за раз.

Теперь, если любая из задач использует больше циклов, использование будет выше. Это верно? Если да, то когда для выполнения какой-либо задачи требуется большое количество циклов или, другими словами, что на самом деле означают циклы?

-1

1 ответ на вопрос

4
mtak

Короткий ответ, так как люди написали целые книги на эту тему:

Циклы обычно выражаются терминологией «процессорное время». Процессу выделяется определенное количество «квантов» на процессоре. Помните, что в архитектурах CISC (например, x86) одна «инструкция» может занимать несколько циклов.

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

Однако все современные операционные системы имеют более продвинутые алгоритмы планирования, которые принимают во внимание один или несколько из следующих параметров:

  • приоритет
  • Состояние (заблокировано для ввода-вывода, работоспособно, остановлено и т. Д.)
  • Последний раз процесс запускался на процессоре

В зависимости от алгоритма планирования процессам будет разрешено запускаться на процессоре до тех пор, пока:

  • Он запрашивает ввод / вывод и будет заблокирован им
  • Процесс с более высоким приоритетом требует процессорного времени ( упреждение )
  • Аппаратное прерывание сработало.
  • Квант процесса заканчивается.

Как организована окончательная очередь, зависит от планировщика. Планировщик Linux описан здесь .

Размышление о циклах не очень полезно в контексте реального компьютера. Одна инструкция, как указано выше, может принимать несколько циклов на архитектурах CISC. ЦП также будет использовать циклы для переключения между процессами (изменение регистров, обновление MMU и т. Д.). Циклы как таковые не очень хорошая метрика для использования при описании использования процессора.

Полезный вывод ЦП в основном определяется тем, насколько быстро он может обрабатывать запросы. Когда процессы готовы к обработке, они помещаются в очередь в очереди выполнения, пока они не будут обработаны ЦП. Пока процессы не должны ждать больше, чем квант (~ 200 мс) для запуска, система, по сути, работает так же быстро, как и собирается. В ОС это отображается в виде числа (либо в виде числа с плавающей запятой (Linux: top/ uptime), либо в процентах (Windows Taskmanager).

Чтобы дать краткий ответ на вопрос, который вы задали в заголовке: загрузка становится высокой, поскольку очередь выполнения увеличивается. «Использование», которое вы видите в Windows или Linux, представляет собой лишь среднее значение длины очереди выполнения с течением времени.

Спасибо, мтак. Если вы ответите, что циклы обычно выражаются терминологией «время ЦП», то циклы ЦП и использование ЦП - это разные термины. Можете ли вы пролить свет на то, что такое использование ЦП, которое является целью этого вопроса? user3198603 7 лет назад 0
Я обновил ответ, но вы на самом деле не задаете конкретный вопрос. Я предполагаю, что вы не специалист по компьютерной архитектуре (извините, если это не так), поэтому я считаю, что вы задаете вопрос, который на самом деле не актуален. Я предоставил всю дополнительную информацию, чтобы вы могли лучше понять и понять, как ОС планирует процессы (и как это связано с фактической производительностью / показателями, которые вы можете просматривать в ОС). mtak 7 лет назад 0
Привет, мтак, я прочитал немного больше ресурсов в сети и понял, когда загрузка ЦП становится высокой. Скажем, когда я вижу задачу управления, если загрузка ЦП показывает 70%, это означает, что в последние х секунд процессор работал 70% времени за х секунд или только 30% бесплатно в последние х секунд. Я получаю это сейчас user3198603 7 лет назад 1

Похожие вопросы