Wydajność maszyny wirtualnej i dysku
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny ✔️ wirtualne z systemem Windows ✔️ — elastyczne 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ę (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 ograniczana, gdy aplikacja żąda większej liczby operacji we/wy na sekundę lub większej przepływności niż przydzielona dla maszyn wirtualnych lub dołączonych dysków. Po ograniczeniu aplikacja ma nieoptymalną wydajność. Może to mieć negatywne skutki, takie jak zwiększone opóźnienia. Przyjrzyjmy się kilku przykładom, aby wyjaśnić tę koncepcję. Aby ułatwić obserwowanie tych przykładów, przyjrzymy się tylko operacji we/wy na sekundę. Jednak ta sama logika ma zastosowanie do przepływności.
Ograniczanie operacji we/wy dysku
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
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ż maszyna wirtualna Standard_D8s_v3 może wykonać maksymalnie 12 800 operacji we/wy na sekundę.
10 000 żądań 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 to dyski 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 poziomie 10 000 operacji we/wy na sekundę, jeśli są używane dyski o lepszej wydajności, takie jak dyski SSD P30 w warstwie Premium.
Ograniczanie operacji we/wy 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
Aplikacja uruchomiona na maszynie wirtualnej wysyła żądanie wymagające 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ę.
Żą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 żą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 z żądanymi kwotami.
Limity bez buforowania maszyny wirtualnej i buforowanej
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:
- Maksymalna przepływność dysku niecached jest domyślnym limitem maksymalnym magazynu, który może obsłużyć maszyna wirtualna.
- Maksymalny limit przepływności pamięci podręcznej magazynu jest oddzielnym limitem podczas włączania buforowania hostów.
Buforowanie hostów działa, przybliżając magazyn do maszyny wirtualnej, która może być zapisywana lub odczytywana w celu szybkiego odczytu. 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 z obsługą pamięci podręcznej będą miały włączoną buforowanie tylko do odczytu. Dyski systemu operacyjnego z obsługą pamięci podręcznej będą miały włączone buforowanie odczytu/zapisu.
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 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 przyjrzymy się, co się stanie z żądaniami we/wy, gdy ustawienie buforowania hosta jest ustawione na wartość 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 liczone do limitów buforowanych maszyn wirtualnych.
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 liżony zarówno do limitu niecached maszyny wirtualnej, jak i limitu pamięci podręcznej maszyny wirtualnej.
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 liżony do limitu niecached maszyny wirtualnej i limitu pamięci podręcznej maszyny wirtualnej.
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 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 wartość Odczyt/zapis, należy zapisać tylko zapis 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, gdy pamięć podręczna jest okresowo opróżniona. Klienci mogą dodatkowo wymusić opróżnienie, wydając polecenie f/sync lub fua. Oznacza to, że zapis jest liczone w kierunku buforowanych operacji we/wy podczas zapisywania w pamięci podręcznej. Gdy jest on leniwie zapisywany na dysku, liczy się w kierunku niecachedowanych operacji we/wy.
Kontynuujmy pracę z naszą maszyną wirtualną Standard_D8s_v3. Z wyjątkiem tego czasu włączymy buforowanie hostów na dyskach. Dzięki temu limit 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:
- 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
Aplikacja używa maszyny wirtualnej Standard_D8s_v3 z włączoną buforowaniem. Wykonuje żądanie dla 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 pamięci podręcznej maszyny wirtualnej są oddzielone 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ą. Będziemy kontynuować konfigurację dołączonych maszyn wirtualnych 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
W takim przypadku aplikacja uruchomiona na maszynie wirtualnej Standard_D8s_v3 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 znajdują 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, znajdują się w granicach niebuforowanych 12 800, te żądania również zostały pomyślnie ukończone. Nie ma ograniczenia.