Udostępnij za pośrednictwem


Wydajność maszyny wirtualnej i dysku

Dotyczy: ✔️ Maszyny wirtualne Linux ✔️ Maszyny wirtualne Windows ✔️ Elastyczne zestawy skalowania ✔️ Jednolite zestawy skalowania

Ten artykuł pomaga wyjaśnić wydajność dysku i sposób jego działania podczas łączenia maszyn wirtualnych platformy Azure i dysków platformy Azure. W tym artykule opisano również sposób diagnozowania wąskich gardeł dla operacji we/wy dysku oraz zmian, które można wprowadzić w celu optymalizacji pod kątem wydajności.

Jak działa wydajność dysku?

Maszyny wirtualne platformy Azure mają operacje wejścia/wyjścia na sekundę i limity wydajności przepływności na podstawie typu i rozmiaru maszyny wirtualnej. Dyski systemu operacyjnego i dyski danych można dołączyć do maszyn wirtualnych. Dyski mają własne limity operacji IOPS i przepustowości.

Alokacja dysku i wydajność

Istnieją trzy sposoby, dzięki którym przepustowość i operacje wejścia/wyjścia na sekundę (IOPS) mogą być kierowane do dysków dołączonych do maszyny wirtualnej na platformie Azure. Na poniższym diagramie przedstawiono alokację tych ścieżek w czasie rzeczywistym.

Na poniższym diagramie przedstawiono alokację przepustowości w czasie rzeczywistym i operacji we/wy na sekundę (IOPS) dla dysków z trzema ścieżkami, które mogą zająć operacje we/wy.

Diagram trzypoziomowego systemu przydzielania zasobów pokazującego przepustowość i alokację liczby operacji we/wy na sekundę.

Pierwsza ścieżka we/wy to ścieżka dysku zarządzanego bez buforu. Operacje we/wy używają tej ścieżki podczas korzystania z dysku zarządzanego i ustawiasz buforowanie hosta na nonewartość. Operacje we/wy korzystające z tej ścieżki są uruchamiane na podstawie aprowizacji na poziomie dysku, a następnie aprowizacji na poziomie sieci maszyn wirtualnych dla IOPS i przepustowości.

Druga ścieżka we/wy to ścieżka zarządzanego dysku z pamięcią podręczną. W przypadku dysków zarządzanych w pamięci podręcznej wykorzystuje się dysk SSD blisko związany z maszyną wirtualną. Ten dysk SSD ma zarezerwowane własne zasoby, w tym liczbę operacji we/wy na sekundę (IOPS) i transfer. Na diagramie są one przedstawione jako "zarezerwowane zasoby na poziomie dysków SSD".

Gdy buforowany dysk zarządzany inicjuje odczyt, żądanie najpierw sprawdza, czy dane znajdują się na serwerze SSD. Jeśli dane nie są obecne, wystąpi buforowana miss. Następnie operacje we/wy są uruchamiane na podstawie aprowizacji na poziomie dysków SSD, dalszej aprowizacji na poziomie dysku SSD oraz aprowizacji na poziomie sieci maszyn wirtualnych, dla IOPS i przepływności.

Gdy dysk SSD serwera inicjuje odczyty we/wy w pamięci podręcznej znajdującej się na dysku SSD serwera, dochodzi do trafienia w pamięć podręczną. Następnie operacje we/wy są wykonywane na podstawie zarządzania zasobami na poziomie SSD. Pisze, że każde inicjowanie dla buforowanego dysku zarządzanego zawsze podąża za ścieżką chybienia buforowanego. Przechodzą oni przez przydzielanie zasobów na poziomie dysków SSD, dysków twardych oraz sieci maszyn wirtualnych.

Trzecia ścieżka dotyczy dysku lokalnego/tymczasowego . Jest ona dostępna tylko na maszynach wirtualnych, które obsługują dyski lokalne/tymczasowe . Operacja we/wy korzystająca z tej ścieżki działa zgodnie z aprowizacją na poziomie dysków SSD dla IOPS i przepływności.

Na poniższym diagramie przedstawiono przykład tych ograniczeń. System uniemożliwia maszynie wirtualnej Standard_D2s_v3 osiągnięcie 5000 IOPS dysku P30, niezależnie od tego, czy jest buforowany, czy nie, ze względu na ograniczenia na poziomie dysku SSD i sieci.

Diagram trzypoziomowego systemu aprowizacji z Standard_D2s_v3 przykładową alokacją.

Platforma Azure używa priorytetowego kanału sieciowego dla ruchu dyskowego. Ruch dyskowy ma pierwszeństwo przed ruchem sieciowym o niskim priorytcie. Ta priorytetyzacja pomaga dyskom zachować oczekiwaną wydajność, jeśli istnieje rywalizacja sieciowa.

Podobnie usługa Azure Storage obsługuje rywalizacje o zasoby i inne problemy w tle z automatycznym równoważeniem obciążenia. Usługa Azure Storage przydziela wymagane zasoby podczas tworzenia dysku i stosuje proaktywne i reaktywne równoważenie zasobów w celu obsługi poziomu ruchu. To zachowanie dodatkowo gwarantuje, że dyski mogą utrzymać zamierzone cele IOPS i wydajności. Użyj metryk na poziomie maszyny wirtualnej i na poziomie dysku, aby śledzić wydajność i konfigurować alerty zgodnie z potrzebami.

Ograniczanie IO dysku

Wydajność aplikacji jest ograniczona, gdy żąda więcej IOPS lub przepustowości niż przydzielono dla maszyn wirtualnych lub dołączonych dysków. Po ograniczeniu aplikacja ma nieoptymalną wydajność. Może to prowadzić do negatywnych konsekwencji, takich jak zwiększone opóźnienie. Przyjrzyjmy się kilku przykładom, aby wyjaśnić tę koncepcję. Aby ułatwić obserwowanie tych przykładów, przyjrzymy się tylko wartościom IOPS. Jednak ta sama logika ma zastosowanie do przepływności.

Instalacji:

  • Standard_D8s_v3
    • Niebuforowane operacje we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego E30
    • IOPS: 500
  • Dwa dyski danych E30 × 2
    • IOPS: 500

Diagram przedstawiający limitowanie poziomu dysku.

Aplikacja uruchomiona na maszynie wirtualnej wysyła żądanie, które wymaga 10 000 IOPS. Wszystkie są dozwolone przez VM, ponieważ maszyna wirtualna Standard_D8s_v3 może wykonać maksymalnie 12 800 IOPS.

10 000 żądań IOPS jest rozdzielanych na trzy różne dyski.

  • Dysk systemu operacyjnego wymaga 1,000 IOPS (operacji we/wy na sekundę).
  • Każdy dysk danych wymaga 4500 IOPS.

Wszystkie dołączone dyski to dyski E30 i mogą obsługiwać tylko 500 IOPS-ów. W związku z tym reagują z powrotem przy użyciu 500 operacji we/wy na sekundę. Wydajność aplikacji jest ograniczona przez dołączone dyski i może przetwarzać tylko 1500 operacji we/wy na sekundę. Aplikacja może działać ze szczytową wydajnością przy 10 000 IOPS, jeśli są używane dyski o lepszej wydajności, takie jak dyski SSD P30 w warstwie Premium.

Ograniczanie I/O maszyny wirtualnej

Instalacji:

  • Standard_D8s_v3
    • Niebuforowane operacje we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego P30
    • IOPS: 5000
  • Dwa dyski danych P30 × 2
    • IOPS: 5000

Diagram przedstawiający ograniczenie poziomu maszyny wirtualnej.

Aplikacja działająca na maszynie wirtualnej wysyła żądanie wymagające 15 000 operacji IOPS. Niestety maszyna wirtualna Standard_D8s_v3 jest przygotowana tylko do obsługi 12 800 operacji wejścia/wyjścia na sekundę. Aplikacja jest ograniczona przez limity maszyny wirtualnej i musi przydzielić przydzielone 12 800 operacji we/wy na sekundę.

Żądane 12 800 operacji we/wy na sekundę są podzielone na trzy różne żądania na różne dyski:

  • Do dysku systemu operacyjnego wymagane jest 4267 operacji we/wy na sekundę.
  • Do każdego dysku danych jest żądane 4,266 IOPS.

Wszystkie załączone dyski to dyski P30, które mogą obsługiwać 5000 IOPS. W związku z tym reagują z powrotem z żądanymi kwotami.

Limity maszyn wirtualnych bez buforowania i z buforowaniem

Maszyny wirtualne, które są włączone dla magazynu w warstwie Premium i pamięci podręcznej w warstwie Premium, mają dwa różne limity przepustowości magazynu. Przyjrzyjmy się Standard_D8s_v3 maszynie wirtualnej jako przykładu. Poniżej przedstawiono dokumentację dotyczącą serii Dsv3 i Standard_D8s_v3:

  • Dane dysku "Uncached" w ramach magazynu zdalnego są domyślnymi limitami maksymalnymi magazynu, które może obsłużyć maszyna wirtualna. Wykres przedstawiający specyfikacje techniczne Dsv3.

  • Dane dysku "Buforowane" na karcie Magazyn lokalny stanowią oddzielne limity po uruchomieniu buforowania hosta. Wykres przedstawiający specyfikacje lokalne dsv3.

Buforowanie hosta działa poprzez przybliżenie pamięci do maszyny wirtualnej, dzięki czemu zapis i odczyt danych może odbywać się szybko. Ilość magazynu, który jest dostępny dla maszyny wirtualnej na potrzeby buforowania hostów, znajduje się w dokumentacji. Na przykład można zobaczyć, że Standard_D8s_v3 zawiera 200 GiB magazynu pamięci podręcznej.

Buforowanie hostów można włączyć podczas tworzenia maszyny wirtualnej i dołączania dysków. Możesz również włączyć i wyłączyć buforowanie hostów na dyskach na istniejącej maszynie wirtualnej. Domyślnie dyski danych mogące korzystać z pamięci podręcznej nie mają buforowania włączonego. Dyski systemu operacyjnego z obsługą pamięci podręcznej mają włączone buforowanie odczytu/zapisu.

Zrzut ekranu przedstawiający buforowanie hostów.

Buforowanie hosta można dostosować tak, aby spełniało wymagania dotyczące obciążenia dla każdego dysku. Można ustawić buforowanie hosta na:

  • Tylko do odczytu: w przypadku obciążeń, które wykonują tylko operacje odczytu
  • Odczyt/zapis: w przypadku obciążeń, które wykonują równoważenie operacji odczytu i zapisu

Jeśli obciążenie nie jest zgodne z jednym z tych wzorców, nie zalecamy używania buforowania hostów.

Przyjrzyjmy się kilku przykładom różnych ustawień pamięci podręcznej hosta, aby zobaczyć, jak wpływa na przepływ danych i wydajność. W tym pierwszym przykładzie widzimy, co się dzieje z żądaniami I/O, gdy ustawienie buforowania hosta jest ustawione na Tylko do odczytu.

Instalacji:

  • Standard_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowane operacje we/wy na sekundę: 12 800
  • Dysk danych P30
    • IOPS: 5000
    • Buforowanie hostów: tylko do odczytu

Po wykonaniu odczytu i udostępnieniu żądanych danych w pamięci podręcznej pamięć podręczna zwraca żądane dane. Nie ma potrzeby odczytywania z dysku. Ten odczyt jest liczony do zbuforowanych limitów wirtualnych maszyn.

Diagram przedstawiający trafienie odczytu buforowania hosta.

Gdy odczyt jest wykonywany, a żądane dane nie są dostępne w pamięci podręcznej, żądanie odczytu jest przekazywane do dysku. Następnie dysk wyświetla go zarówno w pamięci podręcznej, jak i na maszynie wirtualnej. Ten odczyt jest liczony zarówno do limitu niebuforowanego maszyny wirtualnej, jak i limitu buforowanego maszyny wirtualnej.

Diagram przedstawiający chybienie odczytu buforowania hosta.

Po wykonaniu zapisu należy zapisać zapis zarówno w pamięci podręcznej, jak i na dysku, zanim zostanie uznany za ukończony. Ten zapis jest liczony do limitu niebuforowanego maszyny wirtualnej i limitu buforowanego maszyny wirtualnej.

Diagram przedstawiający odczyt zapisywania cache hosta.

Następnie przyjrzyjmy się, co się dzieje z żądaniami we/wy, gdy ustawienie pamięci podręcznej hosta jest ustawione na odczyt/zapis.

Instalacji:

  • Standard_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowane operacje we/wy na sekundę: 12 800
  • Dysk danych P30
    • IOPS: 5000
    • Buforowanie hostów: odczyt/zapis

Odczyt jest obsługiwany w taki sam sposób jak tryb tylko do odczytu. Zapisy to jedyna rzecz, która odróżnia buforowanie odczytu od buforowania zapisu. Podczas zapisywania, gdy buforowanie hosta jest ustawione na Odczyt/zapis, zapis musi być dokonany tylko w pamięci podręcznej hosta, aby był uznany za ukończony. Zapis jest następnie leniwie zapisywany na dysku, kiedy pamięć podręczna jest okresowo opróżniana. Klienci mogą dodatkowo wymusić opróżnienie, wydając komendę f/sync lub fua. Oznacza to, że zapis jest liczony do buforowanych operacji we/wy, gdy jest zapisywany w pamięci podręcznej. Gdy jest zapisywany z opóźnieniem na dysku, zalicza się do niemagazynowanych operacji we/wy.

Diagram przedstawiający buforowanie zapisu hosta odczytu/zapisu.

Kontynuujmy pracę z naszą maszyną wirtualną Standard_D8s_v3. Z wyjątkiem tego czasu włączamy buforowanie hostów na dyskach. Dzięki temu limit IOPS maszyny wirtualnej wynosi 16 000. Dołączone do maszyny wirtualnej to trzy podstawowe dyski P30, które mogą obsługiwać 5000 operacji we/wy na sekundę.

Instalacji:

  • Standard_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowane operacje we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego P30
    • IOPS: 5000
    • Buforowanie hostów: odczyt/zapis
  • Dwa dyski danych P30 × 2
    • IOPS: 5000
    • Buforowanie hostów: odczyt/zapis

Diagram przedstawiający przykład buforowania hosta.

Aplikacja używa maszyny wirtualnej Standard_D8s_v3 z włączoną buforowaniem. Wykonuje żądanie na 16 000 operacji we/wy na sekundę. Żądania są wykonywane natychmiast po ich odczytaniu lub zapisaniu w pamięci podręcznej. Zapisy są następnie leniwie zapisywane na dołączonych dyskach.

Połączone limity niebuforowane i buforowane

Limity z buforowaniem maszyny wirtualnej są oddzielne od limitów bez buforowania. Oznacza to, że można włączyć buforowanie hostów na dyskach dołączonych do maszyny wirtualnej, nie włączając buforowania hostów na innych dyskach. Ta konfiguracja umożliwia maszynom wirtualnym uzyskanie całkowitej liczby operacji we/wy magazynu limitu pamięci podręcznej oraz limitu bez buforowania.

Przyjrzyjmy się przykładowi, aby zrozumieć, jak te limity współpracują ze sobą. Kontynuujemy konfigurację dołączoną do maszyny wirtualnej Standard_D8s_v3 i dysków w warstwie Premium.

Instalacji:

  • Standard_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowane operacje we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego P30
    • IOPS: 5000
    • Buforowanie hostów: odczyt/zapis
  • Dwa dyski danych P30 × 2
    • IOPS: 5000
    • Buforowanie hostów: odczyt/zapis
  • Dwa dyski danych P30 × 2
    • IOPS: 5000
    • Buforowanie hosta: wyłączone

Diagram przedstawiający przykład buforowania hosta ze zdalną pamięcią masową.

W takim przypadku aplikacja uruchomiona na maszynie wirtualnej Standard_D8s_v3 składa zapytanie o 25 000 IOPS (operacji we/wy na sekundę). Żądanie jest podzielone na 5000 operacji we/wy na sekundę na każdą z dołączonych dysków. Trzy dyski korzystają z buforowania hosta, a dwa dyski z niego nie korzystają.

  • Ponieważ trzy dyski korzystające z buforowania hosta znajdują się w granicy buforowania wynoszącej 16 000, te żądania zostały pomyślnie ukończone. Nie występuje ograniczenie wydajności przechowywania.
  • Ponieważ dwa dyski, które nie korzystają z buforowania przez host, mieszczą się w limicie niebuforowanego cachingu wynoszącym 12 800, te żądania również zostały pomyślnie ukończone. Brak ograniczenia limitu.