Почему нагрузка высокая, несмотря на то, что ни процессор, ни диск не перегружены


20

Я получаю следующий вывод top:

Cpu(s): 43.8%us, 32.5%sy,  4.8%ni,  2.0%id, 15.6%wa,  0.2%hi,  1.2%si,  0.0%st
Mem:  16331504k total, 15759412k used,   572092k free,  4575980k buffers
Swap:  4194296k total,   260644k used,  3933652k free,  1588044k cached

вывод из iostat -xk 6показывает следующее:

Device: rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda       0.00   360.20   86.20  153.40  1133.60  2054.40    26.61     1.51    6.27   0.77  18.38
sdb       0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd      22.60   198.80   17.40   31.60   265.60   921.60    48.46     0.18    3.70   1.67   8.20
sdc      16.80   218.20   22.20   23.40   261.60   966.40    53.86     0.21    4.56   1.49   6.78

Исходя из вышесказанного, похоже, что-то должно быть перегружено. Но что?

Вопросов

  1. Если это не жесткий диск или процессор, то что?
  2. Кажется, как будто 15,6% процессорного времени тратится на ожидание. Что именно это может ждать?

2
что такое спецификации процессора и сколько стоит загрузка?
Sepehr

Нагрузка превышает 100
user4951

нагрузка зависит от количества процессорных и процессорных ядер. Каковы технические характеристики процессоров вашей системы?
Sepehr

Ответы:


49

Как пояснение, нагрузка напрямую не связана с процессором. Это одно из самых распространенных заблуждений о нагрузке. Тот факт, что вы упомянули диск, похоже, подтверждает, что вы знаете об этом, но я просто хотел упомянуть об этом, поскольку вижу комментарии, которые указывают на то, что некоторые считают иначе.

Загрузка определяется как количество процессов, ожидающих системных ресурсов. Обычно это процессор, диск или сеть, но на самом деле это может быть что угодно аппаратное.
«Процесс» также не обязательно является полным процессом. Поток определяется как «облегченный процесс», и каждый ожидающий поток увеличивает счетчик нагрузки.


Чтобы выяснить, какие процессы являются проблемой:

Выполнить top -H( -Hпозволяет показывать потоки)

Сочетания клавиш различаются в зависимости от версии.

С более новым верхом (3.3 и позже):

Нажмите, fчтобы вызвать параметры поля.
Используйте клавиши со стрелками для перехода S = Process Statusи нажмите s.
Нажмите, qчтобы вернуться на главную страницу.
Нажмите Shift+, Rчтобы отменить сортировку.

Со старшей версией (до 3.3):

Нажмите Shift+, oчтобы вызвать параметры сортировки.
Затем wотсортировать по статусу процесса.
Затем, Enterчтобы вернуться на главную страницу.
Затем Shift+, Rчтобы изменить сортировку.

Затем в Sстолбце найдите процессы, которые имеют Dили R(теперь они должны быть вверху). Это будут процессы, способствующие загрузке системы.

Если процесс показывает D, что означает «непрерывный сон». Обычно это происходит, когда процесс ожидает ввода-вывода (диск, сеть и т. Д.).
Если процесс показывает a R, это означает, что он просто выполняет обычные вычисления.


Чтобы узнать больше о том, что делают эти процессы:

С более новым верхом (3.3 и позже):

Нажмите, fчтобы вызвать параметры поля.
Используйте клавиши со стрелками для перехода WCHAN = Sleeping in Functionи нажмите, dчтобы включить его.
Затем, qчтобы вернуться на главную страницу.

Со старшей версией (до 3.3):

Нажмите fзатем, yчтобы активировать WCHANполе.

Если в вашей системе есть необходимые параметры ядра, и в вашей системе присутствует файл wchan (я забыл, где он находится и как он называется) , WCHANполе должно показать вам, какую функцию ядра выполняет процесс в данный момент (если поле просто показывает -или ?на все, у вас нет поддержки).
Немного Google здесь, и вы должны быть на своем пути.

Если у вас нет поддержки wchan, вы всегда можете попробовать straceпроцессы, чтобы узнать, что они делают, но это трудный путь.


Я обычно просто нажимаю стрелку влево, чтобы изменить сортировку.
Немо

2

Процессы с коротким сроком службы, такие как компиляция заданий или сбойные процессы в цикле, часто не видны в инструментах мониторинга, таких как topили iostat и так далее.

В таких случаях Linux Audit Framework поможет

Виновник, цикл неудач, например

while :; do gcc /dev/zero ; done >/dev/null 2>&1

Чтобы использовать AuditD / Auditctl:

apt-get install auditd
auditctl -a task,always
ausearch -i -sc execve

украдено из журнала все процессы запускаются


Если они не отображаются top, то вряд ли они влияют на среднюю нагрузку. Чтобы он способствовал усреднению нагрузки, он должен находиться в состоянии ожидания в течение длительного периода времени. Статистически это означает, что это будет появляться в top. Если это не так, то это не значительный вклад.
Патрик

0

У меня была ситуация, когда монтирование NFS отключалось, и, к сожалению, я допустил ошибку и не использовал опцию мягкого монтирования, поэтому на моем Linux-сервере застопорилось множество процессов, включая мониторинг, lsof и даже сеансы bash ....

После демонтажа сломанных креплений система выглядела перегруженной:

top - 00:03:48 up 15 days, 14:56,  3 users,  load average: 29, 21, 20

Это выглядело ужасно, но загрузка процессора ниже 15% и нет дискового ввода-вывода. Я получил несколько советов, чтобы пройти через PS, но это не помогло, поскольку казалось, что процессы в основном спят.

Затем man psсохранил мою ночь для сна, и после исследования я обнаружил очень важные флаги STATUS, чтобы посмотреть, как позже выяснилось, что они застряли процессы.

Выполнение:

ps -e v

и найдите процессы, которые имеют Dили SLв столбце STAT. Это были процессы зомби, но не идентифицированные как Z-зомби.

D - означает в основном активность диска (I / O), но также если вы запускаете ps -e vнесколько раз, а также iostat 3и не видите активности, это указывает на то, что это зависание ввода-вывода .

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

После расследования я убил одного за другим, и средняя загрузка системы стала нормальной.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.