1

Я заметил, что иногда есть (большие) различия между указанным общим использованием ЦП и суммированием загрузки ЦП для каждого процесса, предоставляемой такими приложениями, как top и wmtop .

В качестве примера: я недавно запустил git filter-branch --index-filter на довольно большом репо с командой index-filter, пропускающей git ls-files через фильтр grep и в xargs git rm --cached . Это заняло несколько минут, чтобы бежать; в то время как это происходило, я заметил, что и wmtop и top отображали высокую (более 50% на моей 2-ядерной машине) общую загрузку ЦП, но ни на одном из них не отображались отдельные процессы, использующие значительное количество процессорного времени.

Некоторые процессы не отображаются в списке процессов? Что это за процессы, и есть ли способ узнать, сколько процессорного времени они используют?

1 ответ1

2

Вы должны добавить снимок вывода tops к вашему вопросу, чтобы мы могли точно видеть, что вы видите.

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

Коротко запущенные процессы также дают эффект: если много процессов запускаются, делают что-то маленькое, а затем закрываются, они могут вообще не быть видны сверху или аналогично (особенно если у вас часто не обновляется топ), потому что они сделали свое дело и остановился между обновлениями. Несмотря на то, что они отсутствовали, когда top брал свои выборки (поэтому они не отображаются в списке задач), их общее количество в файловой системе /proc все равно будет отображаться с момента последнего примера, когда ЦПУ был занят для тактов X планировщика и простаивал для Y.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .