Linux - Як я бачу, що чекає дискового вводу


42

У мене є сервер, який має дуже високе навантаження. Ніщо не вискакує на мене з точки зору використання процесора, і це не міняється.

Я думаю, це тому, що деякі процеси чекають дискового вводу, і я хочу побачити, що чекає.

Чи є якась програма, яка покаже мені, які процеси чекають на IO? Я знаю про, iotopале це показує, що в даний час робить IO.

Або це дурне питання? (Якщо так поясніть, як :))

Відповіді:


47

Ви можете використовувати монітор вводу / виводу, як iotop, але він покаже вам лише процеси або потоки з поточними операціями вводу / виводу.

Якщо вам потрібно переглядати процеси, які очікують на введення-виведення, використовуйте годинник для моніторингу процесів із позначкою "D" STAT, як показано нижче:

watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"

Солодке. Це мені добре допомогло.
Стю Томпсон

2
Крім того, ви можете скористатися командою 'iotop -o', яка буде показувати лише «процеси або потоки, які фактично роблять введення / виведення» відповідно до iotop --help.
Райан

1
@Ryan Окрім того, що він не надає необхідної iowaitінформації, iotopвимагає підвищених привілеїв. watch, psта awkнадавати лише необхідну інформацію та не потребувати підвищених привілеїв.
Багатий

4
Я використовував би psпрапори POSIX і awkредагував це по-різному: watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"- таким чином ви отримуєте заголовки стовпців, а також stat, pid та команду.
Багатий

18

ps axuі шукати процеси, які знаходяться в стані "D". Грунтуючись на маніпуляції ps (1) , процеси, що перебувають у стані D, перебувають у безперервному сновидінні, що майже завжди означає "очікування IO". На жаль, вбити ці процеси, як правило, неможливо.


16

Відповідь Занчі - це найкраще, що я знаю, щоб з’ясувати, що чекає на IO.

Коли ви говорите, що ваш сервер знаходиться під великим навантаженням, що ви розумієте під цим? Щось зокрема реагує повільно?

Якщо вам цікаво, чи ваш вузький диск IO є вузьким місцем, я б скористався командою iostat (частина пакету sysstat), щоб побачити, чи дійсно диск перебуває під великим навантаженням.

Приклад:

[kbrandt@kbrandt-opadmin: ~] iostat -x 1 3                                                                                           

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.38   34.71    2.64    1.18    0.00   59.21 
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.11    17.35    2.21   20.31    46.57   301.40    15.45     2.27  100.66   1.48   3.34
sda1              0.10    17.31    2.21   20.31    46.48   301.10    15.44     2.27  100.66   1.48   3.34
sda2              0.00     0.00    0.00    0.00     0.00     0.00     3.50     0.00   30.00  30.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00    18.44     0.00  677.67 512.61   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.22    0.00    4.31    0.00    0.00   89.47   
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

1
Було б корисно пояснити, як інтерпретувати вихід йостата, "щоб побачити, чи дійсно диск під сильним навантаженням".
Скотт Бюкенан

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.