Jak mogę monitorować obciążenie dysku twardego w systemie Linux?

101

Czy istnieje dobre narzędzie wiersza polecenia do monitorowania obciążenia dysku twardego w systemie Linux? Coś w rodzaju, topale następnie monitorowanie aktywności na dysku iso użycie procesora.

Mówiąc dokładniej, podejrzewam, że w przypadku niektórych (obciążonych) serwerów po kilku optymalizacjach w różnych częściach programów, które na nim działają, w tej chwili wąskim gardłem jest po prostu logowanie do plików na dysku. Ale bardzo trudno jest mi ocenić, ile ruchu mogą obsłużyć serwery.

Moim idealnym narzędziem byłoby coś, co drukuje: „Obecnie używasz 35% przepustowości dysku”. Jakieś pomysły?

Pieter
źródło
1
Idealne pytanie, właśnie tego szukałem =)
rafa.ferreira
Możliwe jest bezpośrednie czytanie sysfs, jak /sys/block/sda/stat. Pole nr 1 podaje całkowitą liczbę odczytów, pole nr 5 jest całkowitą liczbą zapisów, pole nr 9 jest liczbą operacji we / wy w toku. Zobacz więcej w kernel.org/doc/Documentation/iostats.txt Wartości są niepodpisane długo i mogą się zawijać.
sastanin
To bardzo dobre pytanie, ponieważ zawsze zmagamy się z tym problemem na serwerach Plesk. Brakuje jednak how do you do it with SNMP?. Można się logować i sprawdzać, ale naprawdę potrzebne są dane historyczne.
Eugene van der Merwe
unix.stackexchange.com/questions/55212/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

83

Możesz uzyskać całkiem niezłą miarę za pomocą tego iostatnarzędzia.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Wykorzystanie dysku jest wymienione w ostatniej kolumnie. Jest to zdefiniowane jako

Procent czasu procesora, podczas którego żądania We / Wy były wysyłane do urządzenia (wykorzystanie szerokości pasma dla urządzenia). Nasycenie urządzenia występuje, gdy ta wartość jest bliska 100%.

Dave Cheney
źródło
3
W jakim pakiecie znajduje się ten pakiet Debiana, jeśli taki istnieje? apt-cache dumpnic nie podkręcił dla iostat
hBy2Py
9
@Brian: Jest w pakiecie sysstat (w każdym razie przez yum ...)
Joe
Nie można tego znaleźć w RHEL 6.5. Czy jest to dostępne dla RHEL?
Hazok,
Czy może to działać bez opóźnień? Próbowanie uruchomienia pojedynczej instancji w celu pobrania danych z tego samego numeru przypuszczalnie jest niemożliwe, ponieważ nie można pobrać próbek?
Wilf
@Hazok Jest to część sysstat RPM na RHEL 6.5.
TheGeneral
81

iotop to wersja top, która sprawdza, ile IO używa każdy proces. Jest w standardowych repozytoriach Ubuntu; Nie wiem, czy jest w RHEL czy Fedorze, ale tak powinno być.

wprowadź opis zdjęcia tutaj

W przypadku starszych jąder (powiedzmy CentOS 5.x lub RHEL 5.x), które nie obsługują iotop, użyj zamiast tego topio (udokumentowane tutaj: http://yong321.freeshell.org/freeware/pio.html#linux . To zależy od / proc // io dla statystyk io i zapewnia podobną funkcjonalność jak iotop. Aby uzyskać szczegółowe informacje, patrz link.

Tim Howland
źródło
1
Rzeczywiście, nie jest domyślnie instalowany w Ubuntu, więc można by wydać: sudo apt-get install iotop, aby go zdobyć
Moshe
1
iotop wymaga jądra wyższego niż 2.6.20, co niestety wyklucza zarówno RedHat el4, jak i el5.
Dave Cheney
2
Począwszy od wersji RedHat 5.4, bity wymagane do działania iotop zostały cofnięte. Cieszyć się!
Dave Cheney
Jest w Fedorze :).
jamie
13

Jak sugeruje sastanin w komentarzach, możesz przetwarzać bezpośrednio wartości podane w /sys/block/sda/statlub /proc/diskstats. Może to być pomocne, gdy żadne z wymienionych narzędzi nie jest dostępne i nie można ich łatwo zainstalować.

Na przykład (IIUC) coś takiego (w bash) powinno podawać liczbę odczytów na sekundę:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Dokumenty można znaleźć na https://www.kernel.org/doc/Documentation/iostats.txt i https://www.kernel.org/doc/Documentation/block/stat.txt .

Skippy le Grand Gourou
źródło
7

Powinieneś rzucić okiem na szczycie , który łączy moc iotop / top / iftop, wszystko w jednym miejscu, i podkreśla najważniejsze części twojego systemu.

Yvan
źródło
5

Polecam przyjrzeć się narzędziu nmon. Pokaże obciążenie na żywo wielu parametrów systemowych, a także zapis danych do pliku w celu późniejszego przejrzenia. To bezpłatne narzędzie dostępne tutaj :

MikeyB
źródło
5

aby dowiedzieć się, jaka jest twoja łączna przepustowość, możesz użyć hdparm -T /dev/sdado przetestowania wydajności pamięci podręcznej bufora (fileio) w hdparm -t /dev/sdacelu przetestowania wydajności odczytu urządzenia

przykłady: mój laptop pobiera 82 MB / s z dysku SATA i 2 GB / s z pamięci podręcznej. Mój dekstop pobiera 12 GB / s z pamięci podręcznej i 500 MB / s z macierzy HW RAID. Podejrzewam, że te ostatnie liczby mogą być dwukrotnie większe na sprzęcie klasy serwerowej.

ustaw readahead na więcej niż 256, 4096 działa najlepiej dla mnie

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

razy odczytuje 1 GB przy różnych rozmiarach bloków i różnych wyprzedzeniach odczytu

użytkownik2987
źródło
Witamy w SF. Możesz użyć podświetlania kodu w swoich postach, umieszczając cudzysłowy wokół ciągów lub wcięcia akapitów.
inkaphink
Dwie rzeczy - 1) --setrajest teraz -ai 2), hdparm -{T,t}polecenia powodują tylko odczyt dysku, zgodnie z strace, więc nie są destrukcyjne. (Obowiązuje standardowe wyłączenie odpowiedzialności dotyczące porad w Internecie)
i336_
4

Standardowym narzędziem do pokazywania obciążenia dysku twardego jest iostat.

Nie powie ci ile procent przepustowości dysku zużywasz, ponieważ nie wie, ile przepustowości ma twój dysk. W każdym razie na dysku znajduje się tylko wartość podana przez producenta w przypadku dużych transferów ciągłych danych.

Alnitak
źródło
3

Myślę, że RRDtool powinien robić to, co chcesz tutaj , używa demona do zrzucania danych systemowych, a następnie pozwala ci przetwarzać je w dowolny sposób . Często używałem go do tworzenia wykresów itp. Do pomiaru obciążenia systemu.

PixelSmack
źródło