Test porównawczy dysku

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny ✔️ wirtualne z systemem Windows — elastyczne zestawy ✔️ ✔️ skalowania

Testowanie porównawcze to proces symulowania różnych obciążeń w aplikacji i mierzenia wydajności aplikacji dla każdego obciążenia. Korzystając z kroków opisanych w artykule dotyczącym projektowania pod kątem wysokiej wydajności, zebrano wymagania dotyczące wydajności aplikacji. Uruchamiając narzędzia do testów porównawczych na maszynach wirtualnych hostujących aplikację, można określić poziomy wydajności, które aplikacja może osiągnąć za pomocą dysków SSD w warstwie Premium. W tym artykule przedstawiono przykłady testów porównawczych Standard_D8ds_v4 maszyny wirtualnej aprowizowanej przy użyciu dysków SSD w warstwie Premium platformy Azure.

Użyliśmy wspólnych narzędzi porównawczych DiskSpd i FIO, odpowiednio dla systemów Windows i Linux. Te narzędzia mogą symulować wiele wątków, takich jak obciążenie, i mierzyć wydajność systemu. Za pomocą narzędzi można również skonfigurować parametry, takie jak rozmiar bloku i głębokość kolejki, których zwykle nie można zmienić dla aplikacji. Zapewnia to większą elastyczność w celu zwiększenia maksymalnej wydajności na maszynie wirtualnej o dużej skali aprowizowanej przy użyciu dysków SSD w warstwie Premium dla różnych typów obciążeń aplikacji. Aby dowiedzieć się więcej na temat każdego narzędzia do testów porównawczych, odwiedź stronę DiskSpd i FIO.

Aby postępować zgodnie z poniższymi przykładami, utwórz Standard_D8ds_v4 i dołącz cztery dyski SSD w warstwie Premium do maszyny wirtualnej. Z czterech dysków skonfiguruj trzy z buforowaniem hosta jako "Brak" i rozmieść je w woluminie o nazwie NoCacheWrites. Skonfiguruj buforowanie hosta jako "ReadOnly" na pozostałym dysku i utwórz wolumin o nazwie CacheReads z tym dyskiem. Korzystając z tej konfiguracji, można zobaczyć maksymalną wydajność odczytu i zapisu z maszyny wirtualnej Standard_D8ds_v4. Aby uzyskać szczegółowe instrukcje dotyczące tworzenia Standard_D8ds_v4 z dyskami SSD w warstwie Premium, zobacz Projektowanie pod kątem wysokiej wydajności.

Rozgrzej pamięć podręczną

Dysk z buforowaniem hosta ReadOnly może nadać większą ilość operacji we/wy na sekundę niż limit dysku. Aby uzyskać maksymalną wydajność odczytu z pamięci podręcznej hosta, najpierw należy rozgrzać pamięć podręczną tego dysku. Gwarantuje to, że operacje we/wy odczytu, które narzędzie porównawcze będzie napędzać na woluminie CacheReads, faktycznie trafia do pamięci podręcznej, a nie bezpośrednio na dysku. Pamięć podręczna osiąga większą liczbę operacji we/wy na sekundę z jednego dysku z włączoną pamięcią podręczną.

Ważne

Przed uruchomieniem testów porównawczych za każdym razem, gdy maszyna wirtualna zostanie ponownie uruchomiona, należy rozgrzać pamięć podręczną.

DISKSPD

Pobierz narzędzie DISKSP na maszynie wirtualnej. DISKSPD to narzędzie, które można dostosować do tworzenia własnych syntetycznych obciążeń. Użyjemy tej samej konfiguracji opisanej powyżej do uruchamiania testów porównawczych. Możesz zmienić specyfikacje, aby przetestować różne obciążenia.

W tym przykładzie używamy następującego zestawu parametrów punktu odniesienia:

  • -c200G: tworzy (lub ponownie tworzy) przykładowy plik używany w teście. Można go ustawić w bajtach, KiB, MiB, GiB lub blokach. W tym przypadku duży plik 200-GiB docelowy jest używany do zminimalizowania buforowania pamięci.
  • -w100: Określa procent operacji, które są żądaniami zapisu (-w0 jest równoważne 100% odczytu).
  • -b4K: wskazuje rozmiar bloku w bajtach, KiB, MiB lub GiB. W takim przypadku rozmiar bloku 4K służy do symulowania losowego testu we/wy.
  • -F4: Ustawia łącznie cztery wątki.
  • -r: wskazuje losowy test we/wy (zastępuje parametr -s).
  • -o128: Wskazuje liczbę zaległych żądań we/wy na obiekt docelowy na wątek. Jest to również nazywane głębokością kolejki. W tym przypadku 128 jest używany do przeciążenie procesora CPU.
  • -W7200: Określa czas trwania rozgrzewki przed rozpoczęciem pomiarów.
  • -d30: Określa czas trwania testu, a nie obejmuje rozgrzewki.
  • -Sh: Wyłącz buforowanie zapisu oprogramowania i sprzętu (równoważne -Suw).

Aby uzyskać pełną listę parametrów, zobacz repozytorium GitHub.

Maksymalna liczba operacji we/wy zapisu na sekundę

Używamy dużej głębokości kolejki 128, małego rozmiaru bloku 8 KB i czterech wątków roboczych do wykonywania operacji zapisu. Pracownicy zapisu kierują ruch na woluminie "NoCacheWrites", który ma trzy dyski z pamięcią podręczną ustawioną na wartość "Brak".

Uruchom następujące polecenie przez 30 sekund rozgrzewki i 30 sekund pomiaru:

diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

Wyniki pokazują, że maszyna wirtualna Standard_D8ds_v4 dostarcza maksymalny limit liczby operacji we/wy na sekundę zapisu wynoszący 12 800.

W przypadku 3208642560 całkowitej liczby bajtów maksymalna liczba operacji we/wy 391680 z łączną 101,97 mb/s i łącznie 13052,65 we/wy na sekundę.

Maksymalna liczba operacji we/wy odczytu na sekundę

Używamy dużej głębokości kolejki 128, małego rozmiaru bloku czterech KB i czterech wątków roboczych do wykonywania operacji odczytu. Pracownicy odczytu kierują ruch na woluminie "CacheReads", który ma jeden dysk z pamięcią podręczną ustawioną na "ReadOnly".

Uruchom następujące polecenie przez dwie godziny rozgrzewki i 30 sekund pomiaru:

diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat

Wyniki pokazują, że maszyna wirtualna Standard_D8ds_v4 dostarcza maksymalny limit liczby operacji we/wy odczytu na sekundę wynoszący 77 000.

W przypadku 9652785152 całkowitej liczby bajtów liczba operacji we/wy 2356637 łączna liczba operacji we/wy na sekundę wynosi 306,72 i łącznie 78521,23 operacji we/wy na sekundę.

Maksymalna przepływność

Aby uzyskać maksymalną przepływność odczytu i zapisu, można zmienić na większy rozmiar bloku wynoszący 64 KB.

FIO

FiO to popularne narzędzie do testów porównawczych magazynu na maszynach wirtualnych z systemem Linux. Dzięki niej można wybrać różne rozmiary operacji we/wy, sekwencyjne lub losowe operacje odczytu i zapisu. Generuje wątki procesów roboczych lub procesy do wykonywania określonych operacji we/wy. Można określić typ operacji we/wy, które każdy wątek roboczy musi wykonać przy użyciu plików zadań. Utworzyliśmy jeden plik zadania na scenariusz przedstawiony w poniższych przykładach. Możesz zmienić specyfikacje w tych plikach zadań, aby porównać różne obciążenia uruchomione na Premium Storage. W przykładach używamy Standard_D8ds_v4 z systemem Ubuntu. Użyj tej samej konfiguracji opisanej na początku sekcji testu porównawczego i rozgrzej pamięć podręczną przed uruchomieniem testów porównawczych.

Przed rozpoczęciem pobierz narzędzie FIO i zainstaluj je na maszynie wirtualnej.

Uruchom następujące polecenie dla systemu Ubuntu.

apt-get install fio

Używamy czterech wątków roboczych do prowadzenia operacji zapisu i czterech wątków roboczych na potrzeby wykonywania operacji odczytu na dyskach. Pracownicy zapisu kierują ruch na woluminie "nocache", który ma trzy dyski z pamięcią podręczną ustawioną na "Brak". Pracownicy odczytu kierują ruch na woluminie "readcache", który ma jeden dysk z pamięcią podręczną ustawioną na "ReadOnly".

Maksymalna liczba operacji we/wy zapisu na sekundę

Utwórz plik zadania z następującymi specyfikacjami, aby uzyskać maksymalną liczbę operacji we/wy zapisu na sekundę. Nadaj mu nazwę "fiowrite.ini".

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[writer1]
rw=randwrite
directory=/mnt/nocache

Zwróć uwagę na następujące kluczowe kwestie, które są zgodne z wytycznymi projektowymi omówionymi w poprzednich sekcjach. Te specyfikacje są niezbędne do zapewnienia maksymalnej liczby operacji we/wy na sekundę,

  • Wysoka głębokość kolejki 256.
  • Mały rozmiar bloku o rozmiarze 4 KB.
  • Wiele wątków wykonujących losowe operacje zapisu.

Uruchom następujące polecenie, aby rozpocząć test FIO przez 30 sekund.

sudo fio --runtime 30 fiowrite.ini

Podczas uruchamiania testu można zobaczyć liczbę operacji we/wy zapisu, które są dostarczane przez maszynę wirtualną i dyski Premium. Jak pokazano w poniższym przykładzie, maszyna wirtualna Standard_D8ds_v4 dostarcza maksymalny limit liczby operacji we/wy na sekundę zapisu wynoszący 12 800 operacji we/wy na sekundę.
Liczba maszyn wirtualnych we/wy na sekundę zapisu i dysków SSD w warstwie Premium, pokazuje, że operacje zapisu to 13,1 tys. operacji we/wy na sekundę.

Maksymalna liczba operacji we/wy odczytu na sekundę

Utwórz plik zadania z następującymi specyfikacjami, aby uzyskać maksymalną liczbę operacji we/wy odczytu na sekundę. Nadaj mu nazwę "fioread.ini".

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

Zwróć uwagę na następujące kluczowe kwestie, które są zgodne z wytycznymi projektowymi omówionymi w poprzednich sekcjach. Te specyfikacje są niezbędne do zapewnienia maksymalnej liczby operacji we/wy na sekundę,

  • Wysoka głębokość kolejki 256.
  • Mały rozmiar bloku o rozmiarze 4 KB.
  • Wiele wątków wykonujących losowe operacje zapisu.

Uruchom następujące polecenie, aby rozpocząć test FIO przez 30 sekund.

sudo fio --runtime 30 fioread.ini

Podczas uruchamiania testu można zobaczyć liczbę operacji we/wy odczytu na sekundę, które dostarcza maszyna wirtualna i dyski Premium. Jak pokazano w poniższym przykładzie, maszyna wirtualna Standard_D8ds_v4 dostarcza ponad 77 000 operacji we/wy odczytu na sekundę. Jest to kombinacja dysku i wydajności pamięci podręcznej.
Zrzut ekranu przedstawiający liczbę dostarczanych operacji we/wy na sekundę zapisu i dysków SSD w warstwie Premium, co pokazuje, że odczyty to 78,6 tys.

Maksymalna liczba operacji we/wy odczytu i zapisu na sekundę

Utwórz plik zadania z następującymi specyfikacjami, aby uzyskać maksymalną łączną liczbę operacji we/wy odczytu i zapisu na sekundę. Nadaj mu nazwę "fioreadwrite.ini".

[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200

Zwróć uwagę na następujące kluczowe kwestie, które są zgodne z wytycznymi dotyczącymi projektowania omówionymi w poprzednich sekcjach. Te specyfikacje mają kluczowe znaczenie dla maksymalnej liczby operacji we/wy na sekundę,

  • Wysoka głębokość kolejki 128.
  • Mały rozmiar bloku 4 KB.
  • Wiele wątków wykonujących losowe operacje odczytu i zapisu.

Uruchom następujące polecenie, aby uruchomić test FIO przez 30 sekund.

sudo fio --runtime 30 fioreadwrite.ini

Podczas wykonywania testu można zobaczyć liczbę połączonych operacji we/wy odczytu i zapisu na sekundę maszyny wirtualnej i dysków Premium dostarczanych przez maszynę wirtualną i dyski w warstwie Premium. Jak pokazano w poniższym przykładzie, maszyna wirtualna Standard_D8ds_v4 dostarcza ponad 90 000 połączonych operacji we/wy odczytu i zapisu na sekundę. Jest to kombinacja dysku i wydajności pamięci podręcznej.
Łączna liczba operacji we/wy odczytu i zapisu pokazuje, że operacje odczytu to 78,3 tys., a zapisy to 12,6 tys. operacji we/wy na sekundę.

Maksymalna łączna przepływność

Aby uzyskać maksymalną połączoną przepływność odczytu i zapisu, użyj większego rozmiaru bloku i dużej głębokości kolejki z wieloma wątkami wykonującymi operacje odczytu i zapisu. Można użyć rozmiaru bloku 64 KB i głębokości kolejki 128.

Następne kroki

Przejdź do naszego artykułu dotyczącego projektowania pod kątem wysokiej wydajności.

W tym artykule utworzysz listę kontrolną podobną do istniejącej aplikacji dla prototypu. Za pomocą narzędzi do testów porównawczych można symulować obciążenia i mierzyć wydajność w prototypowej aplikacji. Dzięki temu można określić, która oferta dysków może być zgodna z wymaganiami dotyczącymi wydajności aplikacji lub przekraczać ich wymagania. Następnie można zaimplementować te same wytyczne dla aplikacji produkcyjnej.