Wydajność maszyny wirtualnej i dysku

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

Ten artykuł pomaga wyjaśnić wydajność dysku i sposób jego działania podczas łączenia dysków platformy Azure Virtual Machines i platformy Azure. Opisano w nim 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ę (IOPS) 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 liczby operacji we/wy na sekundę i przepływności.

Wydajność aplikacji jest ograniczona, gdy żąda większej liczby operacji we/wy na sekundę lub przepływności niż przydzielona 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ć śledzenie tych przykładów, przyjrzymy się tylko operacji we/wy na sekundę. Jednak ta sama logika ma zastosowanie do przepływności.

Ograniczenie operacji we/wy dysku

Instalacji:

  • Standardowa_D8s_v3
    • Niebuforowana wartość we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego E30
    • Operacje we/wy na sekundę: 500
  • Dwa dyski danych E30 × 2
    • Operacje we/wy na sekundę: 500

Diagram showing disk level capping.

Aplikacja uruchomiona na maszynie wirtualnej wysyła żądanie, które wymaga 10 000 operacji we/wy na sekundę do maszyny wirtualnej. Wszystkie z nich są dozwolone przez maszynę wirtualną, ponieważ Standard_D8s_v3 maszyna wirtualna może wykonać do 12 800 operacji we/wy na sekundę.

10 000 żądań liczby operacji we/wy na sekundę jest podzielonych na trzy różne żądania na różne dyski:

  • Do dysku systemu operacyjnego wymagane jest 1000 operacji we/wy na sekundę.
  • Do każdego dysku danych żąda się 4500 operacji we/wy na sekundę.

Wszystkie dołączone dyski są dyskami E30 i mogą obsługiwać tylko 500 operacji we/wy na sekundę. 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ą na 10 000 operacji we/wy na sekundę, jeśli są używane dyski o lepszej wydajności, takie jak dyski SSD P30 Premium.

Ograniczanie operacji we/wy maszyny wirtualnej

Instalacji:

  • Standardowa_D8s_v3
    • Niebuforowana wartość we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego P30
    • Operacje we/wy na sekundę: 5000
  • Dwa dyski danych P30 × 2
    • Operacje we/wy na sekundę: 5000

Diagram showing virtual machine level capping.

Aplikacja uruchomiona na maszynie wirtualnej wysyła żądanie, które wymaga 15 000 operacji we/wy na sekundę. Niestety maszyna wirtualna Standard_D8s_v3 jest aprowizowana tylko do obsługi 12 800 operacji we/wy na sekundę. Aplikacja jest ograniczona przez limity maszyny wirtualnej i musi przydzielić przydzielone 12 800 operacji we/wy na sekundę.

Te 12 800 żądań liczby operacji we/wy na sekundę są podzielone na trzy różne żądania do różnych dysków:

  • Do dysku systemu operacyjnego jest wymagane 4267 operacji we/wy na sekundę.
  • Do każdego dysku danych żąda się 4266 operacji we/wy na sekundę.

Wszystkie dołączone dyski to dyski P30, które mogą obsługiwać 5000 operacji we/wy na sekundę. W związku z tym reagują z powrotem na żądane kwoty.

Limity niebuforowane maszyny wirtualnej i buforowane

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

Chart showing D s v 3 specifications.

  • Maksymalna przepływność dysku bez pamięci podręcznej to domyślny limit maksymalnej ilości miejsca do magazynowania, który może obsłużyć maszyna wirtualna.
  • Maksymalny limit przepływności pamięci podręcznej magazynu jest osobnym limitem podczas włączania buforowania hosta.

Buforowanie hostów działa przez zbliżenie magazynu do maszyny wirtualnej, która może być zapisywana lub odczytywana w celu szybkiego odczytu. Ilość magazynu dostępnego 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 hosta 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.

Screenshot showing host caching.

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

  • Tylko do odczytu: w przypadku obciążeń, które wykonują tylko operacje odczytu
  • Odczyt/zapis: w przypadku obciążeń, które równoważą operacje 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 to na przepływ danych i wydajność. W tym pierwszym przykładzie przyjrzymy się, co się stanie z żądaniami we/wy, gdy ustawienie buforowania hosta jest ustawione na wartość Tylko do odczytu.

Instalacji:

  • Standardowa_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowana wartość we/wy na sekundę: 12 800
  • Dysk danych P30
    • Operacje we/wy na sekundę: 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 liczone do limitów pamięci podręcznej maszyny wirtualnej.

Diagram showing a read host caching read hit.

Gdy odczyt jest wykonywany i żą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 liczone zarówno do limitu niebuforowanego maszyny wirtualnej, jak i limitu pamięci podręcznej maszyny wirtualnej.

Diagram showing a read host caching read miss.

Po wykonaniu zapisu zapis musi zostać zapisany zarówno w pamięci podręcznej, jak i na dysku, zanim zostanie uznany za ukończony. Ten zapis jest wliczany do limitu niebuforowanego maszyny wirtualnej i limitu pamięci podręcznej maszyny wirtualnej.

Diagram showing a read host caching write.

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

Instalacji:

  • Standardowa_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowana wartość we/wy na sekundę: 12 800
  • Dysk danych P30
    • Operacje we/wy na sekundę: 5000
    • Buforowanie hosta: odczyt/zapis

Odczyt jest obsługiwany w taki sam sposób, jak w przypadku tylko do odczytu. Zapisy są jedyną rzeczą, która różni się od buforowania odczytu/zapisu. Podczas zapisywania przy użyciu buforowania hosta jest ustawiona na odczyt/zapis, tylko zapis musi być zapisywany w pamięci podręcznej hosta, aby można je było uznać za ukończone. Zapis jest następnie z opóźnieniem zapisywany na dysku jako proces w tle. Oznacza to, że zapis jest liczone do buforowanych operacji we/wy podczas zapisywania w pamięci podręcznej. Gdy jest on z opóźnieniem zapisywany na dysku, liczy się w kierunku niebuforowanego we/wy.

Diagram showing read/write host caching write.

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

Instalacji:

  • Standardowa_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowana wartość we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego P30
    • Operacje we/wy na sekundę: 5000
    • Buforowanie hosta: odczyt/zapis
  • Dwa dyski danych P30 × 2
    • Operacje we/wy na sekundę: 5000
    • Buforowanie hosta: odczyt/zapis

Diagram showing a host caching example.

Aplikacja używa Standard_D8s_v3 maszyny wirtualnej z włączonym buforowaniem. Wysyła żądanie dla 15 000 operacji we/wy na sekundę. Żądania są podzielone na 5000 operacji we/wy na sekundę do każdego dołączonego dysku bazowego. Nie występuje ograniczenie wydajności.

Połączone limity niebuforowane i buforowane

Limity buforowane maszyny wirtualnej są oddzielone od limitów niebuforowanych. Oznacza to, że buforowanie hosta można włączyć 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 niebuforowanego.

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

Instalacji:

  • Standardowa_D8s_v3
    • Buforowane operacje we/wy na sekundę: 16 000
    • Niebuforowana wartość we/wy na sekundę: 12 800
  • Dysk systemu operacyjnego P30
    • Operacje we/wy na sekundę: 5000
    • Buforowanie hosta: odczyt/zapis
  • Dwa dyski danych P30 × 2
    • Operacje we/wy na sekundę: 5000
    • Buforowanie hosta: odczyt/zapis
  • Dwa dyski danych P30 × 2
    • Operacje we/wy na sekundę: 5000
    • Buforowanie hosta: wyłączone

Diagram showing a host caching example with remote storage.

W takim przypadku aplikacja uruchomiona na Standard_D8s_v3 maszynie wirtualnej wysyła żądanie o 25 000 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 używają buforowania hosta, a dwa dyski nie używają buforowania hosta.

  • Ponieważ trzy dyski korzystające z buforowania hostów mieszczą się w granicach buforowanych 16 000, te żądania zostały pomyślnie ukończone. Nie występuje ograniczenie wydajności magazynu.
  • Ponieważ dwa dyski, które nie korzystają z buforowania hostów, mieszczą się w granicach niebuforowanych 12 800, te żądania również zostały ukończone pomyślnie. Nie ma ograniczenia.