Wydajność dysku

W pracy administratora systemów IT często pojawia się problem wydajności systemu lub danego środowiska. O ile bardzo prosto jest zmierzyć obciążenie procesora czy też użycie pamięci RAM, o tyle w różnych systemach operacyjnych zmierzenie wydajności dysku twardego, macierzy dyskowej lub urządzenia sieciowego nie jest już takie banalne ani oczywiste. Poniżej postaram się wyjaśnić w jaki sposób i za pomocą jakich narzędzi mierzymy wydajność dysku. Jak istotny jest to problem można się przekonać podczas budowania środowisk wirtualnych, kiedy to kilka lub kilkanaście fizycznych hostów współdzieli jeden zasób dyskowy. Bardzo często jest to wąskie gardło całego systemu – warto więc wiedzieć jak zmierzyć jego wydajność, by w momencie wdrażania lub testów systemu odpowiednio zmodyfikować jego ustawienia. Dla każdego administratora najważniejsze są wartości IOPS (ilość operacji I/O na sekundę), prędkość zapisu/odczytu (w różnych konfiguracjach – np. odczyt/zapis losowy/sekwencyjny) oraz wskaźnik tzw. latency (czas odpowiedzi dysku).

Windows 8/2012 wydajność dysku pod ręką

W systemach Windows 8 i rodzinie Windows 2012 Server, wydajność dysku, a raczej prędkość z jaką wybrany proces zapisuje dane na dysku dostępna jest z poziomu Menadżera zadań. Jak widać na poniższym obrazku, proces Iometer (omówię to narzędzie później) bardzo intensywnie operuje na zasobach dyskowych (wynik nie zwala z nóg, gdyż jest uruchomiony na dość leciwym laptopie w konfiguracji dysk SATA I 5200-5400rpm używany wtrybie IDE 😉 ) Wydajność dysku - task manager
Widać powyżej, że obciążenie dysku wynosi 100%, co w przybliżeniu przekłada się na prędkość około 30MB/s. To tyle jeśli chodzi o domyślny widok Menadżera Zadań. Po kliknięciu zakładki Wydajność możemy zerknąć na bardziej rozbudowane statystyki pracy dysku.
To wszystko dostajemy dopiero w najnowszych wersjach systemu Windows. Co jeśli dysponujemy starszą generacją systemów Microsoft? Możemy śmiało skorzystać z dwóch narzędzi, pierwsze z nich to Iometer zaś drugie to vdbench. Obydwa narzędzie można znaleźć na sourceforge.

Iometer – czyli wyciśnij ósme poty z dysku

Iometer jest narzędziem „okienkowym” i „klikalnym”. Vdbench, co prawda ma GUI, ale nie da się z interfejsu graficznego wybrać wszystkich opcji, w przeciwieństwie do linii komend, gdzie wszystkie opcje są dostępne. Iometer po wystartowaniu testu dla danego zasobu dyskowego (wg. dokumentacji zalecane jest uruchamianie tego narzędzia tylko na dyskach fizycznych maszyny)
iometer
Podczas wykonywania testu widzimy aktualne wartości dla ilości operacji I/O, „przepustowość” dysku (wg. ustawień testu), średni czas odpowiedzi dysku, maksymalny czas odpowiedzi dysku, obciążenie CPU i ilość błędów podczas testu.
Vdbench jest nieco bardziej „toporny”, jednak wraz z pokaźną dokumentacją (ponad 100 stron) może stanowić dla niejednego fana CMD nie lada gratkę. Poniżej podgląd raportu w CMD (generowany jest także raport szczegółowy w HTML)Powyżej uruchomiłem vdbench z podstawowymi ustawieniami, i otrzymałem dość dziwne rezultaty.

Linux nie gorszy

Na platformę Linux ilość narzędzi jest zdecydowanie większa. Ja polecam korzystanie z kilku: iotop, ioping, nfsiostat, hdparm oraz niezbędnego przy testowaniu dd.
Podstawowym testem na wydajność zapisu jest właśnie dd. Na poniższym obrazku korzystam z polecenia dd, aby utworzyć plik o wielkości 2,5 GB. To narzędzie możemy używać także na dyskach/udziałach sieciowych.
Jest to test zapisu sekwencyjnego, więc w teorii wynik powinien być maksymalną dostępną prędkością zapisu.

Jak to wygląda „na żywo” można podejrzeć korzystając z iotop – narzędzia dziłającego podobnie jak wbudowany top, z tą różnicą, że pokazuje aktywność danego procesu na dysku twardym (iotop działa tylko na dyskach lokalnych – np. dla udziałów NFS nie pokaże nic)
Narzędzie hdparam ukazuje „teoretyczne” wyniki odczytu z dysku:
Jak widać wyniki odczytu nie są najgorsze, ale jest to odczyt sekwencyjny.
Bardzo interesującym narzędziem jest ioping, badający latency dysku. Nie jest zbyt skompilowanym narzędziem, ale daje radę 🙂 Poniżej przykład wyników ioping do dysku lokalnego:
Oraz zmapowanego udziału NFS:
Jak widać wyniki są całkiem przyzwoite (ale to tylko dlatego, że środowisko nie było zbyt mocno obciążone).

Po co w ogóle mierzyć wydajność dysku lub macierzy?

Często budując infrastrukturę serwerów pomija się wydajność zasobów dyskowych, większą uwagę poświęcając wartościom CPU lub ilości RAM. Czasem jednak okazuje się, że dana maszyna, korzysta z RAM w niewielkim stopniu, procesor po prostu się nudzi, a wydajność serwera nadal pozostawia wiele do życzenia (szczególnie dotkliwe dla serwerów baz danych). Warto wtedy przygotować stres testy dla zasobów dyskowych.
Zdaję sobie sprawę z tego, że temat badania wydajności dysku/zasobów dyskowych został ledwie rozpoczęty, więc jeśli chcielibyście otrzymać instrukcję jak dogłębnie zbadać wasze zasoby dyskowe przedstawionymi powyżej narzędziami oraz jak czytać wyniki testów – poprosimy o pozostawienie informacji w komentarzach.

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

Przeczytaj także...

3 komentarze

  1. Pawel pisze:

    Dobrym pomysłem może być montowanie dysków z opcją „relatime”

  2. Anonim pisze:

    Jeśli macie pomysły na rozbudowę tego materiału to jak najbardziej dobry plan

  3. Karol pisze:

    Od siebie dodam, może jakiś art na temat Samby i badania wydajności. Sam borykam się z takim problemem i nie bardzo mogę to ruszyć.
    Druga sprawa, a sprawność dysku? Smart testy? Dysk może być felerny?

Dodaj komentarz