Ustalanie, który proces powoduje ciężkie operacje we / wy dysku?

19

Widziałem to pytanie: jak rozpoznać ciężki zapis na dysk?

I użyłem dstat i na szczycie przed ... ale nie wydają się wskazać, co jest przyczyną proces disk I / O. Na przykład z dstat:

dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  block i/o process
14-12 16:16:25| 22   3  49  26   0   0|2324k    0 |  17k 6144B|   0     0 |1324     0 |
14-12 16:16:26| 24   3  30  43   0   0|4960k 8192B|1498B 4322B|   0     0 |1494     0 |wget          0  4096B
14-12 16:16:27| 25   4  38  33   0   0|4612k  548k|5011B   27k|   0     0 |1582     0 |kjournald     0    24k
14-12 16:16:28| 23   3  42  32   0   0|5072k    0 |  24k 4368B|   0     0 |1495     0 |

Zauważ, ile wynosi dsk / total - od 2 do 5 MB / s. Ale spójrz na kolumnę „najdroższą” - to tylko kilka bajtów tutaj, kilka KB tam, a czasem nawet nic. To samo dotyczy „atop”. Pokazuje wysokie ogólne użycie dysku, ale niskie zużycie z poszczególnych procesów. Używam CentOS 5, jądro 2.6.18-53.

Czy potrzebuję nowszej wersji jądra? Może gdzieś jakieś ustawienia konfiguracji systemu? Strona główna „atop” zaleca instalowanie niektórych łat do jądra, ale wolałbym nie męczyć się z konfigurowaniem i kompilowaniem własnego jądra.

davr
źródło

Odpowiedzi:

26

iotop ( link ) na początek;) Nie widziałem, żebyś opublikował jego wynik.

1: Doświadczyłem prawie tej samej sytuacji z systemem plików rejestrowania i atime - jednak z większą liczbą zapisów.

Spróbuj ponownie zamontować system za pomocą noatime i wyłączyć rejestrowanie systemu plików (później tylko w celu testowania), aby sprawdzić, czy jest on oparty na systemie plików i, jak już wspomniano, iotop, jeśli jest oparty na procesach.

2: Myślę, że ta partycja nie jest częścią właśnie przebudowywanej tablicy rajdowej, prawda?

3: Jeśli masz dużo bardzo małych plików (dużo mniejszych niż rzeczywisty rozmiar bloku urządzenia i / lub rozmiar systemu plików) i czytasz te małe pliki, kończy się to na czytaniu całych bloków z systemu i większość z tych bloków zostaną odczytane za darmo.

4: Jeśli nic nie pomaga powyżej, zawsze możesz uzyskać listę plików, do których można uzyskać dostęp poprzez wykonanie

echo 1 > /proc/sys/vm/block_dump

należy pamiętać, że znacznie obniża wydajność systemu. Instrukcje są dostępne w moim poprzednim poście tutaj

asdmin
źródło
1
Pokonaj mnie z około 5 sekundami;) +1
pehrs
Po prostu miałem szczęście, ale prawie natychmiast rozszerzyłem odpowiedź, ponieważ nie była to dokładnie odpowiedź na pytanie;)
asdmin,