Test porównawczy dysku
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny ✔️ wirtualne z systemem Windows ✔️ — elastyczne zestawy ✔️ skalowania
Benchmarking 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 typowych narzędzi porównawczych DiskSpd i FIO odpowiednio dla systemów Windows i Linux. Te narzędzia duplikują wiele wątków symulujących środowisko produkcyjne, takie jak obciążenie, i mierzą 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żesz 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 dać większą liczbę operacji we/wy na sekundę niż limit dysku. Aby uzyskać tę 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 do porównywania porównawczego będzie obsługiwać wolumin CacheReads, faktycznie trafia do pamięci podręcznej, a nie bezpośrednio na dysku. Trafienie pamięci podręcznej powoduje zwiększenie liczby operacji we/wy na sekundę z pojedynczej pamięci podręcznej włączonej na dysku.
Ważne
Należy rozgrzać pamięć podręczną przed uruchomieniem testów porównawczych za każdym razem, gdy maszyna wirtualna zostanie ponownie uruchomiona.
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 do zminimalizowania buforowania pamięci jest używany duży plik docelowy 200-GiB.
- -w100: Określa procent operacji, które są żądaniami zapisu (-w0 jest odpowiednikiem 100% odczytu).
- -b4K: wskazuje rozmiar bloku w bajtach, KiB, MiB lub GiB. W takim przypadku rozmiar bloku 4K jest używany 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 element docelowy na wątek. Jest to również nazywane głębokością kolejki. W takim przypadku 128 jest używane do przeciążenie procesora CPU.
- -W7200: Określa czas trwania rozgrzewki przed rozpoczęciem pomiarów.
- -d30: określa czas trwania testu, a nie w tym 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 bloku o rozmiarze 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 zapisu na sekundę wynoszący 12 800.
Maksymalna liczba operacji we/wy odczytu na sekundę
Używamy dużej głębokości kolejki 128, małego bloku o rozmiarze 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 wartość "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.
Maksymalna przepływność
Aby uzyskać maksymalną przepływność odczytu i zapisu, możesz zmienić rozmiar na większy blok o rozmiarze 64 KB.
FIO
FIO to popularne narzędzie do porównywania magazynu na maszynach wirtualnych z systemem Linux. Zapewnia elastyczność wybierania różnych rozmiarów operacji we/wy, sekwencyjnych lub losowych operacji odczytu i zapisów. Umożliwia ona tworzenie wątków roboczych lub procesów w celu wykonania określonych operacji we/wy. Można określić typ operacji we/wy, które każdy wątek procesu roboczego musi wykonywać 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 w usłudze 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 wartość "Brak". Pracownicy odczytu kierują ruch na woluminie "readcache", który ma jeden dysk z pamięcią podręczną ustawioną na wartość "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 mają kluczowe znaczenie dla 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 uruchomić test FIO przez 30 sekund.
sudo fio --runtime 30 fiowrite.ini
Podczas wykonywania testów można zobaczyć liczbę operacji we/wy zapisu na sekundę maszyny wirtualnej i dysków Premium dostarczanych. Jak pokazano w poniższym przykładzie, maszyna wirtualna Standard_D8ds_v4 dostarcza maksymalny limit liczby operacji we/wy zapisu wynoszący 12 800 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 mają kluczowe znaczenie dla 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 uruchomić test FIO przez 30 sekund.
sudo fio --runtime 30 fioread.ini
Podczas uruchamiania testu można zobaczyć liczbę operacji we/wy odczytu maszyny wirtualnej i dysków Premium dostarczanych przez operacje we/wy na sekundę. 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.
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 projektowymi 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 o rozmiarze 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 przebiegów testów można zobaczyć liczbę połączonych operacji we/wy odczytu i zapisu na sekundę maszyny wirtualnej i dysków Premium dostarczanych. 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.
Maksymalna łączna przepływność
Aby uzyskać maksymalną łączną 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 o rozmiarze 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ść prototypowej aplikacji. W ten sposób można określić, która oferta dysków może być zgodna z wymaganiami dotyczącymi wydajności aplikacji lub ich przekraczać. Następnie możesz zaimplementować te same wytyczne dla aplikacji produkcyjnej.