Что означает высокая загрузка процессора в htop для процессов со статусом S?

1488
Thorsten Schöning

При мониторинге моей системы с htopпомощью столбца состояния процесса для большинства процессов под нагрузкой в ​​основном Sи Rиногда переключается . Из моего понимания статуса документов Sозначает, что процесс спит, пока Rон работает. Но как спящий процесс может потреблять процессор столько, сколько я могу видеть на скриншоте ниже? Я ожидал бы 0большую часть времени для этих процессов.

Я подозреваю, что у них есть I/Oузкое место, так что вполне ожидают некоторые процессы ожидания I/O. Но в таком случае я не понимаю высокой нагрузки на процессор для спящих процессов. Может ли это быть результатом, например, множества переключений контекста, потому что I/Oне может обеспечить разумную пропускную способность, но предлагает ли очень мало данных довольно часто? Это означало бы, что процессоры не могут быть использованы иначе, пока все ожидают I/Oуспеха.

Или это может быть только проблема с отображением, потому что ожидание I/Oдолжно как-то отображаться, и это с точки зрения нагрузки, но на самом деле эти процессы не потребляют никакого процессора? В таком случае процессоры будут использоваться по мере необходимости для реальной обработки вещей.

Спасибо за понимание!

htop

2
Потребление ЦП сообщается за период времени, «S» - это состояние в конце этого времени. Процессы могут постоянно переключаться между режимами работы и сна (в режиме ожидания, пока жесткий диск не прочитает эти байты). Aganju 7 лет назад 2
Когда программа имеет высокую загрузку ЦП, другим процессам трудно получить возможность запуска. Я подозреваю, что `htop`, скорее всего, получит процессорное время в тех редких случаях, когда программы с высоким процессором чего-то ждут (диск, своп, сеть, семафор и т. Д.). AFH 7 лет назад 1
@AFH За исключением `R` означает готовый к работе, не обязательно фактически использующий процессор в тот момент. David Schwartz 7 лет назад 0
@Aganju Ожидание дискового ввода-вывода будет обозначаться как `D`, а не` S`. David Schwartz 7 лет назад 1
@DavidSchwartz - я понял, что: в одноядерной системе это должно означать «готов к работе», поскольку «htop» использует только один процессор, и это произойдет только в результате сокращения времени, хотя я не смотрел в деталях этого алгоритма в Linux. Что касается `S` и` D`, вы правы, и я не должен был включать доступ к диску в свой список состояний ожидания, хотя теоретически драйвер диска мог бы быть написан для разрешения обработки прерываний, и в этом случае `S` показал бы - но стандартные драйверы жестких и сетевых дисков в Ubuntu не были написаны таким образом. AFH 7 лет назад 0
Также следует отметить, что частота обновления htop равна 1 секунде (по крайней мере, по умолчанию), поэтому ему придется выполнить некоторую гимнастику, чтобы показать состояния и время при разрезании времени между потоками, что происходит в масштабе времени 10-100 мс. возможно, были потоки 1/10/100, которые получили время в течение этой последней секунды. Frank Thomas 7 лет назад 0

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