# Jak sprawdzić wydajność dysków?

W celu sprawdzenia wydajności dysków OVS sugerujemy wykorzystać odpowiednio:
- fio dla systemów Linux (w przykładzie Debian/Ubuntu);
- Atto Disk Benchmark dla systemów Windows.

Testy dysków z Tier 3 i wyższym
Zalecana jest zmiana kontrolera dyskowego na High performance PVSCSI
Najlepiej jest testować dodatkowy dysk bez systemu plików który dodaje swój narzut.
Klasa maszyny wirtualnej podczas testów powinna posiadać co najmniej 8 vCPU Maksymalne parametry dla T4 i T5 można osiągnąć w PL-001 i PL-005
po wybraniu klasy maszyny zawierającej co najmniej 16 vCPU.

# fio

Jest to działające z CLI narzędzie pozwalające na przeprowadzenie testów losowego lub sekwencyjnego odczytu/zapisu danych za pomocą komendy fio z odpowiednimi parametrami precyzującymi zapytanie.

W celu przeprowadzenia testów najpierw należy zainstalować aplikację. W tym celu zaloguj się przez ssh lub Konsolę zdalną na konto root maszyny wirtualnej i zainstaluj aplikację fio poleceniem:

apt-get update && apt-get install -y fio

Poniżej przedstawiamy gotowe komendy testująca wydajność OVS oraz opis użytych parametrów.

RandRead

fio --filename=/dev/sdb --direct=1 --rw=randread --bs=4k \
    --numjobs=2 --runtime=90 --group_reporting --name=test1 \
    --ioengine=libaio --thread --iodepth=128 --time_based

RandWrite

fio --filename=/dev/sdb --direct=1 --rw=randwrite --bs=4k \ 
    --numjobs=2 --runtime=90 --group_reporting --name=test1 \
    --ioengine=libaio --thread --iodepth=128 --time_based

ReadBandwidth, Random

fio --filename=/dev/sdb --direct=1 --rw=randread --bs=1m \
    --numjobs=4 --runtime=90 --group_reporting --name=test1 \ 
    --ioengine=libaio --thread --iodepth=128 --time_based

WriteBandwidth, Random

fio --filename=/dev/sdb --direct=1 --rw=randwrite --bs=4k \ 
    --numjobs=2 --runtime=90 --group_reporting --name=test1 \ 
    --ioengine=libaio --thread --iodepth=128 --time_based

Wyjaśnienia użytych parametrów

--filename=/dev/sdb - nazwa dysku, który jest poddawany testom
--direct=1          - pomija lokalny cache w teście
--rw=randread       - test randomowego odczytu
--rw=randwrite      - test randomowego zapisu
--bs=4k             - wielkość bloków, na jakich wykonywane są operacje
--numjobs=2         - ilość procesów wykonywanych jednocześnie 
--runtime=90        - czas wykonywania testu w sekundach
--group_reporting   - agreguje wszystkie wyniki do jednego raportu
--name=test1        - nazwa testu
--ioengine=libaio   - standardowy, asynchroniczny silnik Linux’a 
--thread            - twórz wątki z wykorzystaniem pthread_create zamiast fork
--iodepth=128       - liczba maksymalnie niezakończonych asynchronicznych operacji
--time_based        - uruchamia na zadany w runtime czas, powtarza jak skończy

W przypadku testowania plików w systemie plików należy dodatkowo do każdego z poleceń dodać parametr --size, na przykład --size=512M. Dla testów całych urządzeń jest to zbędne.

Dokumentacja parametrów fio dostępna jest na stronie: https://linux.die.net/man/1/fio.
Fio dostępne jest również w wersji dla Windows na stronie: https://bluestop.org/fio/.

# Atto Disk Benchmark

Jest to graficzne narzędzie do testowania wydajności urządzeń do magazynowania danych takich jak dyski twarde i SSD, karty pamięci oraz również dyski wirtualne. Testy polegają na pomiarach operacji odczytu i zapisu za pomocą danych różnej wielkości. Pozwala to określić szybkość dysku, której wartość pozwala oszacować jego działanie w czasie codziennej pracy. Wyniki testów przedstawiane są w postaci wykresów słupkowych, które można zapisać, bądź też wydrukować. Program nie wymaga instalacji.

W celu skorzystania z programu należy pobrać go ze strony producenta i uruchomić.
https://www.atto.com/disk-benchmark/ (opens new window)

  1. Wybierz nośnik do przetestowania na rozwijanej liście "Drive".
  2. Określ rozmiar transferowanego pakietu danych (Transfer Size, od 0,5KB do 8192KB),
  3. Poda całkowity rozmiar pliku do testów (Total Length, od 64KB do 2GB)
  4. Dodatkowo możesz określić pominięcie mechanizmu buforowania danych (Direct I/O), pominięcie zapisu pliku stronicowania (Bypass Write Cache), a także weryfikowanie danych w celu wykrycia błędów (Verify Data),
  5. Kliknij Start. Program zaprezentuje szybkość zapisu (kolor czerwony) i prędkość odczytu (kolor zielony), oś Y prezentuje wielkości paczek z danymi, zaś oś X osiągnięty transfer danych.
  6. Opcjonalnie zapisz/ wydrukuj test. Może to służyć porównaniom w przyszłości. Zapis testu tworzy plik w formacie .bmk.