Linux - jak mogę zobaczyć, co czeka na IO dysku


42

Mam serwer, który ma naprawdę duże obciążenie. Nic nie wyskakuje na mnie pod względem wykorzystania procesora i nie jest zamiana.

Myślę, że to dlatego, że niektóre procesy czekają na We / Wy dysku i chcę zobaczyć, co czeka.

Czy jest jakiś program, który pokaże mi, jakie procesy czekają na IO? Wiem o iotoptym, ale pokazuje to, co obecnie robi IO.

Czy to głupie pytanie? (Jeśli tak, wyjaśnij jak :))

Odpowiedzi:


47

Możesz użyć monitora we / wy, takiego jak iotop, ale pokaże tylko procesy lub wątki z bieżącymi operacjami we / wy.

Jeśli chcesz przeglądać procesy oczekujące na operacje we / wy, użyj watch do monitorowania procesów z flagą STAT „D”, jak poniżej:

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

Słodkie. To mi ładnie pomogło.
Stu Thompson,

2
Alternatywnie możesz użyć polecenia „iotop -o”, które wyświetli tylko „procesy lub wątki faktycznie wykonujące operacje we / wy” zgodnie z iotop --help.
Ryan,

1
@ Ryan Oprócz tego, że nie dostarcza wymaganych iowaitinformacji, iotopwymaga podwyższonych uprawnień. watch, psi awkpodaj tylko wymagane informacje i nie wymagaj podwyższonych uprawnień.
Bogaty

4
Użyłbym ps„s flagi POSIX i awked go różnie: watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"- W ten sposób uzyskasz nagłówki kolumn, a stat, PID i polecenia.
Bogaty

18

ps axui poszukaj procesów, które są w stanie „D”. Na podstawie strony ps (1) procesy znajdujące się w stanie D są w nieprzerwanym śnie, co prawie zawsze oznacza „czekanie na IO”. Niestety zabicie tych procesów zwykle nie jest możliwe.


16

Odpowiedź Zancheya jest najlepsza, jaką wiem, aby dowiedzieć się, co czeka na IO.

Kiedy mówisz, że twój serwer jest obciążony, co masz na myśli? Coś szczególnie reaguje wolno?

Jeśli zastanawiasz się, czy Twoje We / Wy dysku jest wąskim gardłem, użyłbym polecenia iostat (część pakietu sysstat), aby sprawdzić, czy dysk faktycznie jest obciążony.

Przykład:

[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
Pomocne byłoby wyjaśnienie, w jaki sposób interpretować dane wyjściowe programu iostat, „aby sprawdzić, czy dysk rzeczywiście jest mocno obciążony”.
Scott Buchanan,

0

Włącz rejestrowanie zrzutu_ bloku dla tego, jakie procesy wykonują operacje odczytu / zapisu bloku:

echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog

po zakończeniu wyłącz śledzenie, aby nie spamować plików dziennika:

echo 0 > /proc/sys/vm/block_dump
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.