Где находится ожидание сети в топе?

9

Если top показывает высокие нагрузки, и вы не знаете, выполняет ли процесс, вызывающий его, процессорное время или выполняет сетевой ввод-вывод (не локальный ввод-вывод), как вы можете это выяснить?

На нашем сервере я вижу высокие значения нагрузки, но в сочетании с 60% -70% простоя и около 25% пользователя. Я хотел бы знать, как интерпретировать такие значения, но в Интернете я почти всегда читаю, что вы можете использовать iostat, чтобы увидеть, уничтожает ли процесс ваши диски. Но я уже точно знаю, что это не так. У рассматриваемого процесса также нет проблем с выполнением своей работы, но нагрузка все еще высока.

Итак, есть ли способ узнать больше, какая часть вызвана сетевым ожиданием, а какая часть вызвана реальным процессором? И что означает «холостой» в топ?

Для ясности: с нагрузкой я имею в виду 3 числа, которые обозначают среднее число процессов в очереди на ядро. На этой машине 8 ядер, и их число достигает 25, то есть нагрузка составляет 2,5 на ядро.

январь
источник
Что вы называете «нагрузка»: загрузка ЦП или 3 значения «средняя загрузка» (видно в uptimeвыводе)?
spuk
1
Вопрос не имеет смысла ... ожидание сетевого ввода-вывода не использует никакого времени процессора.
psusi
2
Я люблю утилиту htopдля вглядывания в процессы. В частности, он может позволить вам выбрать процесс, а затем, используя lкоманду, он покажет вам все открытые файлы, lsofвключая IPv4и IPv6потоковые устройства и тому подобное. Если вы straceустановили на свой компьютер, вы также можете выполнять отладку системных вызовов и сигналов. Не совсем ответ, но другой инструмент, который я бы рассмотрел для того, что вы пытаетесь исследовать.
111 ---
Я имею в виду 3 числа. Как я понимаю они называются "нагрузка", или я тут не прав? Они представляют количество процессов в очереди, которые могут быть выполнены, но включают ли они процессы, которые ожидают в сети, или это исключает процессы?
января
А что вы определяете как "высокий"? Средняя нагрузка не масштабируется для ядер. Например, система со средней нагрузкой в ​​1 и 4 ядра равна 1/4 по сравнению с системой со средней нагрузкой в ​​1 и только 1 ядро. Средняя нагрузка - это очень грубое число.
Багамат

Ответы:

3

Если top показывает высокие нагрузки, и вы не знаете, выполняет ли процесс, вызывающий его, процессорное время или выполняет сетевой ввод-вывод (не локальный ввод-вывод), как вы можете это выяснить?

Сетевой ввод-вывод не учитывается в метрике Linux iowait, если только он не является частью транзакции NFS, и в этом случае он рассматривается как дисковый ввод-вывод.

Итак, есть ли способ узнать больше, какая часть вызвана сетевым ожиданием, а какая часть вызвана реальным процессором?

За исключением гипотетического ожидания NFS, никакая часть средней нагрузки не принимается сетевым ожиданием.

И что означает «холостой» в топ?

Это означает, что процент времени, в течение которого процессор не находится в другом из перечисленных состояний (пользователь, система, nice, iowait, аппаратные прерывания, программные прерывания, кража). Это включает в себя ожидания сети. В режиме ожидания процессор практически ничего не делает. Обратите внимание, что iowait также простаивает, так как процессор тоже ничего не делает.

jlliagre
источник
Спасибо за Ваш ответ. Так что в моей ситуации, когда я вижу высокое значение простоя (60% - 70%) и более низкое состояние пользователя (около 25%) и низкое значение iowait, это может означать, что сервер ожидает сетевых ресурсов, если я вас правильно понимаю.
Jan
1
Не обязательно ждать сетевых ресурсов. Это может быть просто процессор достаточно быстрый, чтобы выполнить все, что нужно сделать. Высокая средняя нагрузка, возможно, вызвана очень большим количеством потоков, одновременно конкурирующих за ЦП, но в течение очень коротких периодов времени.
Jlliagre