Иногда мои серверы показывают высокую среднюю загрузку в «верхней» программе (например, нагрузка составляет ~ 10 на 4-ядерном компьютере), но фактическое использование ЦП не особенно велико.
Я предполагаю, что проблема в том, что выполняется много заданий с интенсивным вводом-выводом. Есть ли простой способ определить эти задания, вызывающие нагрузку, если их значения "% ЦП" в верхней части не так уж велики?
iostat
может сообщать такую статистику. Обычно включается в ваш дистрибутив в пакет sysstat.
dstat тоже стоит взглянуть, это современная замена.
Если у вас есть Учет ввода-вывода в вашем ядре, тогда вы можете использовать iotop
давать такую информацию. Кроме того, инструменты мониторинга, такие как collectd, могут записывать данные и сообщать о них.
Чтобы выяснить, что вызывает высокую нагрузку, вы можете проверить несколько вещей.
vmstat -w
покажет вам ovierwiem (процессы, своп, память, процессор, io, система) pmstat -P ALL
предоставит вам статистику (с% iowait) на ядро процессораiostat -x
ищите высокий% util или долгое ожидание или большой средний размер очереди iotop
ps -ax
найдите состояние D, которое является непрерывным сном (обычно IO), запустите его еще раз, проверьте, находятся ли они все еще в состоянии D sar -b
- общие мероприятия io sar -d
- индивидуальные блочные устройства io-активности