Azure Premium Storage: projektowanie pod aby uzyskać wysoką wydajność

Ten artykuł zawiera wskazówki dotyczące tworzenia aplikacji o wysokiej wydajności przy użyciu usługi Azure Premium Storage. Możesz użyć instrukcji podanych w tym dokumencie w połączeniu z najlepszymi rozwiązaniami dotyczącymi wydajności dotyczącymi technologii używanych przez aplikację. Aby zilustrować wytyczne, w tym dokumencie SQL Server uruchomione na Premium Storage przykładzie.

Chociaż w tym artykule osłaniamy scenariusze wydajności dla warstwy magazynu, należy zoptymalizować warstwę aplikacji. Jeśli na przykład hostujesz farmę programu SharePoint na platformie Azure Premium Storage, możesz użyć przykładów SQL Server z tego artykułu, aby zoptymalizować serwer bazy danych. Ponadto zoptymalizuj serwer sieci Web i serwer aplikacji farmy programu SharePoint, aby uzyskać jak najwięcej wydajności.

Ten artykuł pomoże odpowiedzieć na często zadawane pytania dotyczące optymalizacji wydajności aplikacji na platformie Azure Premium Storage.

  • Jak mierzyć wydajność aplikacji?
  • Dlaczego nie widzisz oczekiwanej wysokiej wydajności?
  • Które czynniki wpływają na wydajność aplikacji na Premium Storage?
  • Jak te czynniki wpływają na wydajność aplikacji na Premium Storage?
  • Jak można zoptymalizować pod kątem operacji we/wy na żywo, przepustowości i opóźnień?

Te wytyczne zostały podane specjalnie dla Premium Storage, ponieważ obciążenia uruchomione na Premium Storage są wysoce wrażliwe na wydajność. W razie potrzeby podano przykłady. Niektóre z tych wytycznych można również zastosować do aplikacji działających na maszynach wirtualnych IaaS z Standard Storage dyskami.

Uwaga

Czasami wydaje się, że problem z wydajnością dysku jest w rzeczywistości wąskim gardłem sieci. W takich sytuacjach należy zoptymalizować wydajność sieci.

Jeśli chcesz testować dysk, zapoznaj się z naszymi artykułami na temat testów porównawczych dysku:

Jeśli maszyna wirtualna obsługuje przyspieszoną sieć, upewnij się, że jest włączona. Jeśli nie jest włączona, możesz ją włączyć na już wdrożonych maszynach wirtualnych w systemach Windows i Linux.

Przed rozpoczęciem, jeśli dopiero zaczynasz korzystanie z usługi Premium Storage, przeczytaj temat Select an Azure disk type for IaaS VMs and Scalability targets for premium page blob storage accounts (Wybieranie typu dysku platformy Azure dla maszyn wirtualnych IaaS i obiektów docelowych skalowalności dla kont magazynu stronicowych obiektów blobw chmurze w witrynie Premium).

Wskaźniki wydajności aplikacji

Oceniamy, czy aplikacja działa dobrze, czy nie, używając wskaźników wydajności, takich jak szybkość przetwarzania żądania użytkownika przez aplikację, ile danych aplikacja przetwarza na żądanie, ile żądań przetwarza aplikacja w określonym czasie, jak długo użytkownik musi czekać na odpowiedź po przesłaniu żądania. Terminy techniczne dotyczące tych wskaźników wydajności to: IOPS, Throughput lub Bandwidth i Latency.

W tej sekcji omówimy typowe wskaźniki wydajności w kontekście Premium Storage. W poniższej sekcji Zbieranie wymagań aplikacji dowiesz się, jak mierzyć te wskaźniki wydajności dla aplikacji. W dalszej części tematu Optymalizowanie wydajności aplikacji poznasz czynniki wpływające na te wskaźniki wydajności i zalecenia dotyczące ich optymalizacji.

Liczba operacji we/wy na sekundę

Liczba operacji we/wy na sekundę (IOPS, Input/output Operations Per Second) to liczba żądań, które aplikacja wysyła do dysków magazynu w ciągu jednej sekundy. Operacja wejściowa/wyjściowa może być do odczytu lub zapisu, sekwencyjna lub losowa. Aplikacje przetwarzania transakcji online (OLTP, Online Transaction Processing), takie jak witryna internetowa handlu detalicznego online, muszą natychmiast przetwarzać wiele równoczesnych żądań użytkowników. Żądania użytkownika to transakcje wstawiania i aktualizowania bazy danych intensywnie obciążane, które aplikacja musi szybko przetworzyć. W związku z tym aplikacje OLTP wymagają bardzo dużej IOPS. Takie aplikacje obsługują miliony małych i losowych żądań We/Wy. Jeśli masz taką aplikację, musisz zaprojektować infrastrukturę aplikacji pod kątem optymalizacji pod kątem IOPS. W dalszej sekcji Optymalizacja wydajności aplikacji szczegółowo omówimy wszystkie czynniki, które należy wziąć pod uwagę, aby uzyskać wysoką wydajność IOPS.

Po dołączeniu dysku magazynu premium do maszyny wirtualnej o dużej skali platforma Azure aprowizuje dla Ciebie gwarantowaną liczbę operacji we/wy zgodnie ze specyfikacją dysku. Na przykład dysk P50 aprowizuje 7500 IOPS. Każdy rozmiar maszyny wirtualnej o dużej skali ma również określony limit IOPS, jaki może utrzymać. Na przykład standardowa maszyna wirtualna GS5 ma limit 80 000 IOPS.

Przepływność

Przepływność lub przepustowość to ilość danych, które aplikacja wysyła do dysków magazynu w określonym interwale. Jeśli aplikacja wykonuje operacje wejścia/wyjścia z dużymi rozmiarami jednostek We/Wy, wymaga wysokiej przepływności. Aplikacje magazynu danych zwykle wykonują intensywne operacje skanowania, które jednocześnie mają dostęp do dużych fragmentów danych i często wykonują operacje zbiorcze. Innymi słowy, takie aplikacje wymagają większej przepływności. Jeśli masz taką aplikację, musisz zaprojektować jej infrastrukturę w celu optymalizacji pod kątem przepływności. W następnej sekcji szczegółowo omówimy czynniki, które należy dostroić, aby to osiągnąć.

Po dołączeniu dysku magazynu w chmurze w chmurze do maszyny wirtualnej o dużej skali platforma Azure awizuje przepływność zgodnie ze specyfikacją tego dysku. Na przykład dysk P50 aprowizuje przepływność dysku wynoszącą 250 MB na sekundę. Każdy rozmiar maszyny wirtualnej o dużej skali ma również określony limit przepływności, jaki może utrzymać. Na przykład maszyna wirtualna Standard GS5 ma maksymalną przepływność wynoszącą 2000 MB na sekundę.

Istnieje relacja między przepływnością a wartością IOPS, jak pokazano w poniższej formule.

Relacja między IOPS i przepływnością

Dlatego ważne jest, aby określić optymalną przepływność i wartości IOPS wymagane przez aplikację. Podczas próby optymalizacji jednego z nich wpływa to również na drugą. W dalszej sekcji Optymalizacja wydajności aplikacji omówimy bardziej szczegółowo optymalizację liczby IOPS i przepływności.

Opóźnienie

Opóźnienie to czas, przez który aplikacja otrzymuje pojedyncze żądanie, wysyła je do dysków magazynu i wysyła odpowiedź do klienta. Jest to kluczowa miara wydajności aplikacji, a nie tylko IOPS i przepływności. Opóźnienie dysku magazynu w chmurze Premium to czas pobierania informacji dotyczących żądania i przekazywania ich z powrotem do aplikacji. Premium Storage stale małe opóźnienia. Dyski w warstwie Premium zaprojektowano tak, aby zapewnić opóźnienia (w milisekundach) dla większości operacji we/wy. Jeśli włączysz buforowanie hosta Tylko do odczytu na dyskach magazynu w warstwie Premium, możesz uzyskać znacznie mniejsze opóźnienie odczytu. Buforowanie dysku zostanie omówione bardziej szczegółowo w dalszej sekcji optymalizowania wydajności aplikacji.

Optymalizacja aplikacji w celu uzyskania większej wartości IOPS i przepływności wpłynie na opóźnienie aplikacji. Po dostrojeniu wydajności aplikacji należy zawsze ocenić opóźnienie aplikacji, aby uniknąć nieoczekiwanego zachowania wysokiego opóźnienia.

Następujące operacje płaszczyzny sterowania na Dyski zarządzane mogą obejmować ruch dysku z jednej lokalizacji magazynu do innej. Odbywa się to za pośrednictwem kopii danych w tle, których ukończenie może potrwać kilka godzin, zwykle mniej niż 24 godziny w zależności od ilości danych na dyskach. W tym czasie w aplikacji może wystąpić większe niż zwykle opóźnienie odczytu, ponieważ niektóre odczyty mogą zostać przekierowane do oryginalnej lokalizacji i ich ukończenie może potrwać dłużej. W tym okresie nie ma to wpływu na opóźnienie zapisu.

  • Zaktualizuj typ magazynu.
  • Odłączanie i dołączanie dysku z jednej maszyny wirtualnej do innej.
  • Utwórz dysk zarządzany z dysku VHD.
  • Tworzenie dysku zarządzanego z migawki.
  • Konwertowanie dysków nieza zarządzanych na dyski zarządzane.

Lista kontrolna aplikacji wydajności dla dysków

Pierwszym krokiem projektowania aplikacji o wysokiej wydajności działających w usłudze Azure Premium Storage jest zrozumienie wymagań dotyczących wydajności aplikacji. Po zebraniu wymagań dotyczących wydajności można zoptymalizować aplikację w celu osiągnięcia optymalnej wydajności.

W poprzedniej sekcji wyjaśniliśmy typowe wskaźniki wydajności, IOPS, przepływność i opóźnienie. Należy określić, które z tych wskaźników wydajności mają kluczowe znaczenie dla aplikacji, aby zapewnić żądane środowisko użytkownika. Na przykład duża wartość liczby operacji we/wy na sekundę ma największe znaczenie dla aplikacji OLTP przetwarzanych w sekundę milionów transakcji. Natomiast wysoka przepływność ma kluczowe znaczenie dla Data Warehouse przetwarzania dużych ilości danych w sekundach. Niezwykle małe opóźnienie ma kluczowe znaczenie dla aplikacji w czasie rzeczywistym, takich jak witryny internetowe przesyłania strumieniowego wideo na żywo.

Następnie zmierz maksymalne wymagania dotyczące wydajności aplikacji w całym okresie jej istnienia. Użyj poniższej przykładowej listy kontrolnej jako początku. Rejestrowanie maksymalnych wymagań dotyczących wydajności w okresach obciążenia normalnych, szczytowych i poza godzinami pracy. Identyfikując wymagania dla wszystkich poziomów obciążeń, można określić ogólne wymaganie dotyczące wydajności aplikacji. Na przykład normalnym obciążeniem witryny internetowej handlu elektronicznego będą transakcje, które obsługuje przez większość dni w roku. Szczytowym obciążeniem witryny internetowej będą transakcje, które obsługuje w okresie świątecznym lub specjalne wydarzenia sprzedażowe. Szczytowe obciążenie występuje zwykle przez ograniczony czas, ale może wymagać, aby aplikacja skalować co najmniej dwa razy normalne działanie. Sprawdź wymagania dotyczące 50 percentyla, 90 percentyla i 99 percentyla. Pomaga to odfiltrować wszelkie wartości odejmujące w wymaganiach dotyczących wydajności i można skoncentrować swoje wysiłki na optymalizacji pod potrzeby odpowiednich wartości.

Lista kontrolna wymagań dotyczących wydajności aplikacji

Wymagania dotyczące wydajności 50 percentyl 90 percentyl 99 percentyl
Maksymalnie z Transakcje na sekundę
% operacji odczytu
% operacji zapisu
% operacji losowych
Procent operacji sekwencyjnych
Rozmiar żądania We/Wy
Średnia przepływność
Maksymalnie z Przepływność
Min. Opóźnienie
Średnie opóźnienie
Maksymalnie z Procesor CPU
Średni procesor CPU
Maksymalnie z Pamięć
Średnia pamięć
Głębokość kolejki

Uwaga

Należy rozważyć skalowanie tych liczb na podstawie oczekiwanego przyszłego wzrostu aplikacji. Dobrym pomysłem jest zaplanowanie wzrostu z wyprzedzeniem, ponieważ później zmiana infrastruktury w celu zwiększenia wydajności może być trudniejsza.

Jeśli masz istniejącą aplikację i chcesz przejść do Premium Storage, najpierw skompilować listę kontrolną powyżej dla istniejącej aplikacji. Następnie skompilować prototyp aplikacji na platformie Premium Storage i zaprojektować aplikację na podstawie wytycznych opisanych w sekcji Optymalizowanie wydajności aplikacji w dalszej części tego dokumentu. W następnym artykule opisano narzędzia, których można użyć do zbierania pomiarów wydajności.

Liczniki do mierzenia wymagań dotyczących wydajności aplikacji

Najlepszym sposobem mierzenia wymagań dotyczących wydajności aplikacji jest użycie narzędzi do monitorowania wydajności dostarczanych przez system operacyjny serwera. Możesz użyć programu PerfMon dla systemu Windows i iostat dla systemu Linux. Te narzędzia przechwytują liczniki odpowiadające każdej mierze wyjaśnionej w powyższej sekcji. Wartości tych liczników należy przechwycić, gdy aplikacja uruchamia obciążenia normalne, szczytowe i poza godzinami pracy.

Liczniki Wydajności są dostępne dla procesora, pamięci i każdego dysku logicznego i dysku fizycznego serwera. W przypadku używania dysków magazynu w warstwie Premium z maszyną wirtualną liczniki dysków fizycznych są dostępne dla każdego dysku magazynu w warstwie Premium, a liczniki dysków logicznych dla każdego woluminu utworzonego na dyskach magazynu w warstwie Premium. Należy przechwycić wartości dysków, które hostują obciążenie aplikacji. Jeśli istnieje mapowanie jeden do jednego między dyskami logicznymi i fizycznymi, można odwoływać się do liczników dysku fizycznego; W przeciwnym razie odwołuj się do liczników dysków logicznych. W systemie Linux polecenie iostat generuje raport wykorzystania procesora CPU i dysku. Raport wykorzystania dysku zawiera statystyki dla każdego urządzenia fizycznego lub partycji. Jeśli masz serwer bazy danych z jego danymi i dziennikami na oddzielnych dyskach, zbierz te dane dla obu dysków. W poniższej tabeli opisano liczniki dla dysków, procesorów i pamięci:

Licznik Opis Perfmon Iostat
IOPS lub transakcje na sekundę Liczba żądań We/Wy wystawionych dla dysku magazynu na sekundę. Odczyty dysku/s
Zapis na dysku/s
Tps
r/s
w/s
Odczyty i zapis na dysku % operacji odczytu i zapisu wykonywanych na dysku. Procent czasu odczytu dysku
Procent czasu zapisu na dysku
r/s
w/s
Przepływność Ilość danych odczytanych z dysku lub zapisywanych na dysku na sekundę. Bajty odczytu dysku/s
Bajty zapisu na dysku/s
kB_read/s
kB_wrtn/s
Opóźnienie Łączny czas ukończenia żądania we/wy dysku. Średnia liczba dysków na sekundę/odczyt
Średni czas dysku na sekundę/zapis
await
svctm
Rozmiar we/wy Rozmiar żądań We/Wy na dyskach magazynu. Średnia liczba bajtów/odczyt dysku
Średnia liczba bajtów dysku/zapis
avgrq-sz
Głębokość kolejki Liczba oczekujących żądań we/wy oczekujących na odczytanie lub zapisane na dysku magazynu. Bieżąca długość kolejki dysku avgqu-sz
Maksymalna ilość pamięci Ilość pamięci wymaganej do bezproblemowego uruchamiania aplikacji Zadeklarowane bajty w użyciu (%) Korzystanie z vmstat
Maks. procesor CPU Ilość procesora wymaganego do bezproblemowego uruchamiania aplikacji Procent czasu procesora %util

Dowiedz się więcej o iostat i perfMon.

Optymalizowanie wydajności aplikacji

Główne czynniki wpływające na wydajność aplikacji działającej na maszynie wirtualnej Premium Storage to rodzaj żądań we/wy, rozmiar maszyny wirtualnej, rozmiar dysku, liczba dysków, buforowanie dysku, wielowątkowanie i głębokość kolejki. Niektóre z tych czynników można kontrolować za pomocą pokrętła dostarczone przez system. Większość aplikacji może nie dać ci możliwości bezpośredniej zmiany rozmiaru we/wy i głębokości kolejki. Jeśli na przykład używasz usługi SQL Server, nie możesz wybrać rozmiaru we/wy ani głębokości kolejki. SQL Server wybiera optymalny rozmiar we/wy i wartości głębokości kolejki w celu uzyskania optymalnej wydajności. Ważne jest, aby zrozumieć wpływ obu typów czynników na wydajność aplikacji, aby można było aprowizować odpowiednie zasoby w celu spełnienia wymagań w zakresie wydajności.

W tej sekcji zapoznaj się z utworzoną listą kontrolną wymagań aplikacji, aby określić, ile potrzebujesz, aby zoptymalizować wydajność aplikacji. Na tej podstawie będzie można określić, które czynniki z tej sekcji należy dostroić. Aby mieć wpływ poszczególnych czynników na wydajność aplikacji, uruchom narzędzia do testów porównawczych dotyczące konfiguracji aplikacji. Zapoznaj się z artykułem Benchmarking (Testy porównawcze) połączonym na końcu, aby uzyskać instrukcje uruchamiania typowych narzędzi do testów porównawczych na komputerach wirtualnych z systemami Windows i Linux.

Optymalizacja operacji we/wy na poziomie operacji we/wy, przepływność i opóźnienie na pierwszy rzut oka

W poniższej tabeli przedstawiono podsumowanie czynników wydajności i kroków niezbędnych do zoptymalizowania operacji we/wy na dane, przepływności i opóźnień. W sekcjach następujących po tym podsumowaniu opisano każdy czynnik o wiele bardziej szczegółowo.

Aby uzyskać więcej informacji na temat rozmiarów maszyn wirtualnych oraz liczby operacji we/wy na wy nas, przepływności i opóźnień dostępnych dla każdego typu maszyny wirtualnej, zobacz Sizes for virtual machines in Azure (Rozmiary maszyn wirtualnych na platformie Azure).

Liczba operacji we/wy na sekundę Przepływność Opóźnienie
Przykładowy scenariusz Aplikacja OLTP dla przedsiębiorstw wymagająca bardzo dużej liczby transakcji na sekundę. Aplikacja do magazynowania danych przedsiębiorstwa przetwarza duże ilości danych. Aplikacje niemal w czasie rzeczywistym wymagające natychmiastowego reagowania na żądania użytkowników, takie jak gry online.
Czynniki wydajności      
Rozmiar we/wy Mniejszy rozmiar we/wy daje większą wartość IOPS. Większy rozmiar we/wy w celu zwiększenia przepływności.  
Rozmiar maszyny wirtualnej Użyj rozmiaru maszyny wirtualnej, który oferuje wartość IOPS większą niż wymaganie aplikacji. Użyj rozmiaru maszyny wirtualnej z limitem przepływności większym niż wymaganie aplikacji. Użyj rozmiaru maszyny wirtualnej, który oferuje limity skalowania większe niż wymagane przez aplikację.
Rozmiar dysku Użyj rozmiaru dysku, który oferuje większą wartość IOPS niż jest to wymagane przez aplikację. Użyj rozmiaru dysku z limitem przepływności większym niż wymaganie aplikacji. Użyj rozmiaru dysku, który oferuje limity skalowania większe niż wymaganie aplikacji.
Limity skalowania maszyn wirtualnych i dysków Limit liczby IOPS wybranego rozmiaru maszyny wirtualnej powinien być większy niż łączna liczba IOPS opartych na dołączonych do niej dyskach magazynu. Limit przepływności wybranego rozmiaru maszyny wirtualnej powinien być większy niż łączna przepływność napędzana przez dołączone do niej dyski magazynu w warstwie Premium. Limity skalowania wybranego rozmiaru maszyny wirtualnej muszą być większe niż łączne limity skalowania dołączonych dysków magazynu w warstwie Premium.
Buforowanie dysku Włącz pamięć podręczną ReadOnly cache na dyskach magazynu w warstwie Premium z operacjami odczytu o dużej pojemności, aby uzyskać większą wartość operacji we/wy odczytu.   Włącz pamięć podręczną ReadOnly na dyskach magazynu w warstwie Premium z operacjami o dużej gotowości, aby uzyskać bardzo niskie opóźnienia odczytu.
Rozkładanie dysku Użyj wielu dysków i połącz je ze sobą, aby uzyskać połączony wyższy limit liczby IOPS i przepływności. Łączny limit na maszynę wirtualną powinien być wyższy niż łączne limity dołączonych dysków w warstwie Premium.    
Rozmiar woluminu rozłożonego Mniejszy rozmiar paska dla losowych małych wzorców we/wy widocznych w aplikacjach OLTP. Na przykład użyj rozmiaru rozłożonego 64 KB dla SQL Server OLTP. Większy rozmiar paska dla sekwencyjnego dużego wzorca we/wy widoczny w Data Warehouse aplikacji. Na przykład użyj rozmiaru rozłożonego 256 KB dla SQL Server magazynu danych.  
Wielowątkowość Użyj wielowątkności, aby wypchnąć większą liczbę żądań do Premium Storage, co prowadzi do większej liczby i przepływności. Na przykład w SQL Server ustaw wysoką wartość MAXDOP, aby przydzielić więcej procesorów CPU do SQL Server.    
Głębokość kolejki Większa głębokość kolejki daje większą wartość IOPS. Większa głębokość kolejki zapewnia wyższą przepływność. Mniejsza głębokość kolejki daje mniejsze opóźnienia.

Charakter żądań we/wy

Żądanie We/Wy to jednostka operacji wejścia/wyjścia, która będzie wykonywać aplikacja. Określenie charakteru żądań we/wy, losowych lub sekwencyjnych, odczytu lub zapisu, małych lub dużych, pomoże określić wymagania dotyczące wydajności aplikacji. Ważne jest, aby zrozumieć charakter żądań we/wy, aby podejmować właściwe decyzje podczas projektowania infrastruktury aplikacji. Aby osiągnąć najlepszą możliwą wydajność, należy dystrybuować równomiernie we/wy.

Rozmiar we/wy jest jednym z ważniejszych czynników. Rozmiar operacji we/wy to rozmiar żądania operacji wejścia/wyjścia wygenerowanego przez aplikację. Rozmiar we/wy ma znaczący wpływ na wydajność, szczególnie w przypadku przepustowości i we/wy na dane, które aplikacja może osiągnąć. Następująca formuła przedstawia relację między wartościami IOPS, Rozmiar we/wy i Przepustowość/przepływność.
Diagram przedstawiający równanie, w którym rozmiar we/wy jest równy przepływności.

Niektóre aplikacje umożliwiają zmianę rozmiaru we/wy, podczas gdy niektóre aplikacje tego nie robią. Na przykład SQL Server rozmiar optymalnych we/wy i nie zapewnia użytkownikom żadnych pokrętła do jego zmiany. Z drugiej strony firma Oracle udostępnia parametr o nazwie ROZMIAR _ BLOKU _ BAZY DANYCH, za pomocą którego można skonfigurować rozmiar żądania We/Wy bazy danych.

Jeśli używasz aplikacji, która nie pozwala na zmianę rozmiaru we/wy, skorzystaj z wytycznych w tym artykule, aby zoptymalizować kluczowy wskaźnik wydajności, który jest najbardziej odpowiedni dla twojej aplikacji. Na przykład

  • Aplikacja OLTP generuje miliony małych i losowych żądań we/wy. Aby obsłużyć tego rodzaju żądania we/wy, należy zaprojektować infrastrukturę aplikacji w celu uzyskania większej wartości IOPS.
  • Aplikacja do magazynowania danych generuje duże i sekwencyjne żądania we/wy. Aby obsłużyć tego rodzaju żądania we/wy, należy zaprojektować infrastrukturę aplikacji w celu uzyskania wyższej przepustowości lub przepływności.

Jeśli używasz aplikacji, która umożliwia zmianę rozmiaru we/wy, użyj tej reguły jako zasady dotyczącej rozmiaru we/wy oprócz innych wytycznych dotyczących wydajności.

  • Mniejszy rozmiar we/wy w celu uzyskania większej wartości IOPS. Na przykład 8 KB dla aplikacji OLTP.
  • Większy rozmiar we/wy w celu uzyskania większej przepustowości/przepływności. Na przykład 1024 KB dla aplikacji magazynu danych.

Oto przykład sposobu obliczania wartości IOPS i przepływności/przepustowości dla aplikacji. Rozważ zastosowanie aplikacji korzystającej z dysku P30. Maksymalna liczba IOPS i przepływność/przepustowość dysku P30 wynosi odpowiednio 5000 IOPS i 200 MB na sekundę. Teraz, jeśli aplikacja wymaga maksymalnej liczby IOPS z dysku P30 i używasz mniejszego rozmiaru we/wy, takiego jak 8 KB, wynikowa przepustowość będzie mogła uzyskać 40 MB na sekundę. Jeśli jednak aplikacja wymaga maksymalnej przepływności/przepustowości z dysku P30 i używasz większego rozmiaru we/wy, takiego jak 1024 KB, wynikowa liczba IOPS będzie mniejsza niż 200 IOPS. W związku z tym rozmiar we/wy należy dostroić tak, aby spełniał wymagania dotyczące zarówno przepływności/przepustowości, jak i przepływności aplikacji. W poniższej tabeli podsumowano różne rozmiary we/wy oraz odpowiadające im wartości IOPS i Przepływność dla dysku P30.

Wymaganie aplikacji Rozmiar we/wy Liczba operacji we/wy na sekundę Przepływność/przepustowość
Maks. liczba operacji we/wy na sekundę 8 KB 5000 40 MB na sekundę
Maksymalna przepływność 1024 KB 200 200 MB na sekundę
Maksymalna przepływność i duża liczba IOPS 64 KB 3,200 200 MB na sekundę
Maksymalna liczba IOPS + wysoka przepływność 32 KB 5000 160 MB na sekundę

Aby uzyskać większą liczbę IOPS i przepustowość niż wartość maksymalna pojedynczego dysku magazynu w warstwie Premium, użyj wielu dysków w warstwie Premium rozłożonych razem. Możesz na przykład rozłożone dwa dyski P30, aby uzyskać łączona przepustowość 10 000 IOPS lub łączona przepływność 400 MB na sekundę. Jak wyjaśniono w następnej sekcji, należy użyć rozmiaru maszyny wirtualnej obsługującego połączoną przepływność i przepływność dysku.

Uwaga

W przypadku zwiększenia liczby IOPS lub przepływności zwiększa się również druga, upewnij się, że nie zostanie najechała przepływność ani nie zostanie uchybiona limitom liczby IOPS dysku lub maszyny wirtualnej podczas zwiększania jednego z nich.

Aby zobaczyć wpływ rozmiaru we/wy na wydajność aplikacji, możesz uruchomić narzędzia do testów porównawczych na maszynie wirtualnej i dyskach. Utwórz wiele przebiegów testów i użyj różnych rozmiarów we/wy dla każdego uruchomienia, aby zobaczyć ich wpływ. Aby uzyskać więcej informacji, zapoznaj się z artykułem Benchmarking (Testy porównawcze) połączonym na końcu.

Rozmiary maszyn wirtualnych o dużej skali

Po rozpoczęciu projektowania aplikacji należy najpierw wybrać maszynę wirtualną do hostowania aplikacji. Premium Storage jest dostarczany z maszynami wirtualnymi o dużej skali, które mogą uruchamiać aplikacje wymagające większej mocy obliczeniowej i wysokiej wydajności operacji we/wy dysku lokalnego. Te maszyny wirtualne zapewniają szybsze procesory, wyższy współczynnik pamięci do rdzenia oraz dysk Solid-State (SSD) dla dysku lokalnego. Przykłady maszyn wirtualnych o dużej skali, które obsługują Premium Storage to maszyny wirtualne z serii DS i GS.

Maszyny wirtualne o dużej skali są dostępne w różnych rozmiarach z różną liczbą rdzeni procesora CPU, pamięci, systemu operacyjnego i rozmiaru dysku tymczasowego. Każdy rozmiar maszyny wirtualnej ma również maksymalną liczbę dysków danych, które można dołączyć do maszyny wirtualnej. W związku z tym wybrany rozmiar maszyny wirtualnej będzie miał wpływ na ilość dostępnej dla aplikacji pojemności przetwarzania, pamięci i magazynu. Ma również wpływ na koszt obliczeń i magazynu. Poniżej przedstawiono specyfikacje największego rozmiaru maszyny wirtualnej w serii DS i serii GS:

Rozmiar maszyny wirtualnej Rdzenie procesora CPU Pamięć Rozmiary dysków maszyn wirtualnych Maksymalnie z dyski danych Rozmiar pamięci podręcznej Liczba operacji we/wy na sekundę Limity we/wy pamięci podręcznej przepustowości
Standardowa_DS14 16 112 GB System operacyjny = 1023 GB
Lokalny dysk SSD = 224 GB
32 576 GB 50 000 IOPS
512 MB na sekundę
4000 IOPS i 33 MB na sekundę
Standardowa_GS5 32 448 GB System operacyjny = 1023 GB
Lokalny dysk SSD = 896 GB
64 4224 GB 80 000 IOPS
2000 MB na sekundę
5000 IOPS i 50 MB na sekundę

Aby wyświetlić pełną listę wszystkich dostępnych rozmiarów maszyn wirtualnych platformy Azure, zapoznaj się z tematem Sizes for virtual machines in Azure (Rozmiary maszyn wirtualnych na platformie Azure) lub . Wybierz rozmiar maszyny wirtualnej, który może spełniać i skalować do żądanych wymagań dotyczących wydajności aplikacji. Oprócz tego podczas wybierania rozmiarów maszyn wirtualnych należy wziąć pod uwagę następujące ważne zagadnienia.

Limity skalowania
Maksymalne limity liczby IOPS na maszynę wirtualną i na dysk są różne i niezależne od siebie. Upewnij się, że aplikacja umożliwia wprowadzeniu wartości IOPS w ramach limitów maszyny wirtualnej, a także dołączonych do niej dysków w warstwie Premium. W przeciwnym razie wydajność aplikacji zostanie ograniczona.

Załóżmy na przykład, że wymaganie aplikacji wynosi maksymalnie 4000 IOPS. W tym celu należy aprowizować dysk P30 na maszynie wirtualnej DS1. Dysk P30 może dostarczyć do 5000 IOPS. Jednak maszyna wirtualna DS1 jest ograniczona do 3200 IOPS. W związku z tym wydajność aplikacji zostanie ograniczona przez limit maszyny wirtualnej do 3200 IOPS, a wydajność zostanie obniżona. Aby uniknąć tej sytuacji, wybierz maszynę wirtualną i rozmiar dysku, które będą spełniać wymagania aplikacji.

Koszt działania
W wielu przypadkach istnieje możliwość, że ogólny koszt operacji przy użyciu usługi Premium Storage jest niższy niż w przypadku korzystania z Standard Storage.

Rozważmy na przykład aplikację wymagającą 16 000 IOPS. Aby osiągnąć tę wydajność, potrzebna będzie standardowa maszyna wirtualna _ IaaS platformy Azure D14, która może zapewnić maksymalną liczbę IOPS 16 000 przy użyciu 32 dysków magazynu standardowego o pojemności 1 TB. Każdy standardowy dysk magazynu o pojemności 1 TB może osiągnąć maksymalnie 500 IOPS. Szacowany koszt tej maszyny wirtualnej miesięcznie wynosi 1570 USD. Miesięczny koszt 32 dysków magazynu w warstwie Standardowa to 1638 USD. Szacowany łączny koszt miesięczny to 3208 USD.

Jeśli jednak ta sama aplikacja była hostowana na Premium Storage, będziesz potrzebować mniejszego rozmiaru maszyny wirtualnej i mniejszej liczby dysków magazynu w warstwie Premium, co zmniejsza całkowity koszt. Maszyna wirtualna DS13 w warstwie Standardowa może spełnić _ wymaganie 16 000 IOPS przy użyciu czterech dysków P30. Maszyna wirtualna DS13 ma maksymalną liczbę IOPS 25 600, a każdy dysk P30 ma maksymalną liczbę IOPS 5000. Ogólnie ta konfiguracja może osiągnąć 5000 x 4 = 20 000 IOPS. Szacowany koszt tej maszyny wirtualnej miesięcznie wynosi 1003 USD. Miesięczny koszt czterech dysków magazynu P30 Premium wynosi 544,34 USD. Szacowany łączny koszt miesięczny to 1544 USD.

W poniższej tabeli podsumowano podział kosztów dla tego scenariusza dla standardowych i Premium Storage.

  Standardowa Premium
Koszt maszyny wirtualnej miesięcznie 1570,58 USD _ (Standardowa D14) 1 003,66 USD _ (StandardOWA DS13)
Koszt dysków na miesiąc 1638,40 USD (32 x 1 TB dysków) 544,34 USD (4 x dyski P30)
Całkowity koszt na miesiąc 3208,98 USD 1544,34 USD

Linuksa

Usługa Azure Premium Storage umożliwia uzyskiwanie tego samego poziomu wydajności dla maszyn wirtualnych z systemami Windows i Linux. Obsługujemy wiele dystrybucji systemu Linux, a pełną listę można zobaczyć tutaj. Należy pamiętać, że różne dystrybucji lepiej nadają się do różnych typów obciążeń. Zobaczysz różne poziomy wydajności w zależności od dystrybucji, na których działa twoje obciążenie. Przetestuj dystrybucje systemu Linux za pomocą aplikacji i wybierz tę, która działa najlepiej.

W przypadku uruchamiania systemu Linux Premium Storage sprawdź najnowsze aktualizacje dotyczące wymaganych sterowników, aby zapewnić wysoką wydajność.

Rozmiary dysków usługi Premium Storage

Usługa Azure Premium Storage oferuje różne rozmiary, dzięki czemu możesz wybrać taki, który najlepiej odpowiada Twoim potrzebom. Każdy rozmiar dysku ma inny limit skalowania dla liczby IOPS, przepustowości i magazynu. Wybierz odpowiedni rozmiar Premium Storage w zależności od wymagań aplikacji i rozmiaru maszyny wirtualnej o dużej skali. W poniższej tabeli przedstawiono rozmiary dysków i ich możliwości. Rozmiary P4, P6, P15, P60, P70 i P80 są obecnie obsługiwane tylko w przypadku Dyski zarządzane.

Rozmiary SSD w warstwie Premium P1 P2 P3 P4 P6 P10 P15 P20 P30 P40 P50 P60 P70 P80
Rozmiar dysku w GiB 4 8 16 32 64 128 256 512 1 024 2048 4 096 8192 16 384 32 767
Zainicjowano liczbę operacji we/wy na dysk 120 120 120 120 240 500 1,100 2300 5000 7500 7500 16 000 18 000 20 000
Elastyczna przepływność na dysk 25 MB/s 25 MB/s 25 MB/s 25 MB/s 50 MB/s 100 MB/s 125 MB/s 150 MB/s 200 MB/s 250 MB/s 250 MB/s 500 MB/s 750 MB/s 900 MB/s
Maksymalna liczba operacji we/wy na sekundę na dysk 3500 3500 3500 3500 3500 3500 3500 3500
Maksymalna przepustowość serii na dysk 170 MB/s 170 MB/s 170 MB/s 170 MB/s 170 MB/s 170 MB/s 170 MB/s 170 MB/s
Maksymalny czas trwania szeregu 30 minut 30 minut 30 minut 30 minut 30 minut 30 minut 30 minut 30 minut
Kwalifikujące się do rezerwacji Nie Nie Nie Nie Nie Nie Nie Nie Tak, do jednego roku Tak, do jednego roku Tak, do jednego roku Tak, do jednego roku Tak, do jednego roku Tak, do jednego roku

Wybór liczby dysków zależy od wybranego rozmiaru dysku. Aby spełnić wymagania aplikacji, możesz użyć jednego dysku P50 lub wielu dysków P10. Podczas dokonywania wyboru należy wziąć pod uwagę zagadnienia wymienione poniżej.

Limity skalowania (IOPS i przepływność)
Limity wartości IOPS i przepływności poszczególnych rozmiarów dysków w wersji Premium różnią się i są niezależne od limitów skalowania maszyn wirtualnych. Upewnij się, że łączna liczba IOPS i przepływność z dysków jest w granicach skali dla wybranego rozmiaru maszyny wirtualnej.

Na przykład jeśli wymaganie aplikacji to maksymalna przepływność 250 MB/s, a używasz maszyny wirtualnej DS4 z pojedynczym dyskiem P30. Maszyna wirtualna DS4 może zapewnić przepływność do 256 MB/s. Jednak jeden dysk P30 ma limit przepływności 200 MB/s. W związku z tym aplikacja zostanie ograniczona do 200 MB/s ze względu na limit dysku. Aby wyeliminować ten limit, aprowizuj więcej niż jeden dysk danych na maszynie wirtualnej lub zmień rozmiar dysków na P40 lub P50.

Uwaga

Odczyty obsługiwane przez pamięć podręczną nie są uwzględniane w przepływności i we/wy dysku, dlatego nie podlegają limitom dysków. Pamięć podręczna ma swój oddzielny limit liczby IOPS i przepływności na maszynę wirtualną.

Na przykład początkowo odczyty i zapis to odpowiednio 60 MB/s i 40 MB/s. Z czasem pamięć podręczna rozgrzewa się i obsługuje coraz więcej odczytów z pamięci podręcznej. Następnie można uzyskać większą przepływność zapisu z dysku.

Liczba dysków
Określ liczbę potrzebnych dysków, oceniając wymagania aplikacji. Każdy rozmiar maszyny wirtualnej ma również limit liczby dysków, które można dołączyć do maszyny wirtualnej. Zazwyczaj jest to dwa razy więcej rdzeni. Upewnij się, że rozmiar maszyny wirtualnej może obsługiwać potrzebną liczbę dysków.

Należy pamiętać, że Premium Storage mają większe możliwości wydajności w porównaniu Standard Storage dysków. W związku z tym w przypadku migrowania aplikacji z maszyny wirtualnej IaaS platformy Azure przy użyciu programu Standard Storage do usługi Premium Storage prawdopodobnie będziesz potrzebować mniej dysków w warstwie Premium, aby osiągnąć tę samą lub wyższą wydajność aplikacji.

Buforowanie dysku

Maszyny wirtualne o dużej skali wykorzystujące usługę Azure Premium Storage mają wielowarstwową technologię buforowania o nazwie BlobCache. Usługa BlobCache używa kombinacji pamięci RAM hosta i lokalnego dysku SSD do buforowania. Ta pamięć podręczna jest dostępna dla Premium Storage dysków trwałych i dysków lokalnych maszyny wirtualnej. Domyślnie to ustawienie pamięci podręcznej ma wartość Odczyt/zapis dla dysków systemu operacyjnego i ReadOnly dla dysków danych hostowanych na Premium Storage. Po włączeniu buforowania dysków na Premium Storage maszyny wirtualne o dużej skali mogą osiągnąć bardzo wysokie poziomy wydajności, które przekraczają wydajność dysków bazowych.

Ostrzeżenie

Buforowanie dysku nie jest obsługiwane w przypadku dysków 4 TiB i większych. Jeśli do maszyny wirtualnej jest dołączonych wiele dysków, każdy dysk mniejszy niż 4 TiB będzie obsługiwać buforowanie.

Zmienianie ustawień pamięci podręcznej dysku platformy Azure powoduje odłączenie i ponowne dołączenie dysku docelowego. Jeśli jest to dysk systemu operacyjnego, maszyna wirtualna zostanie ponownie uruchomiona. Zatrzymasz wszystkie aplikacje/usługi, na które może mieć wpływ to zakłócenie, przed zmianą ustawień pamięci podręcznej dysku. Niesądowe zalecenia mogą prowadzić do uszkodzenia danych.

Aby dowiedzieć się więcej na temat działania usługi BlobCache, zapoznaj się z wpisem w blogu Inside Azure Premium Storage blog (Wewnątrz usługi Azure Premium Storage bloga).

Ważne jest, aby włączyć pamięć podręczną na odpowiednim zestawie dysków. To, czy należy włączyć buforowanie dysku na dysku w awarii Premium, będzie zależeć od wzorca obciążenia, który będzie obsługiny przez dysk. W poniższej tabeli przedstawiono domyślne ustawienia pamięci podręcznej dla dysków systemu operacyjnego i danych.

Typ dysku Domyślne ustawienie pamięci podręcznej
Dysk systemu operacyjnego Odczyt/zapis
Dysk danych ReadOnly

Poniżej przedstawiono zalecane ustawienia pamięci podręcznej dysków dla dysków danych.

Ustawienie buforowania dysku zalecenie dotyczące tego, kiedy należy używać tego ustawienia
Brak Skonfiguruj host-cache jako Brak dla dysków tylko do zapisu i z dużym obciążeniem zapisem.
ReadOnly Skonfiguruj host-cache jako ReadOnly dla dysków tylko do odczytu i odczytu i zapisu.
Odczyt/zapis Skonfiguruj host-cache jako ReadWrite tylko wtedy, gdy aplikacja prawidłowo obsługuje zapisywanie danych w pamięci podręcznej na dyskach trwałych w razie potrzeby.

Readonly
Konfigurując buforowanie ReadOnly na dyskach danych Premium Storage danych, można uzyskać małe opóźnienie odczytu i uzyskać bardzo wysoką przepływność i operacji we/wy odczytu dla aplikacji. Wynika to z dwóch powodów:

  1. Odczyty wykonywane z pamięci podręcznej, która znajduje się w pamięci maszyny wirtualnej i lokalnym dysku SSD, są znacznie szybsze niż odczyty z dysku danych, który znajduje się w magazynie obiektów blob platformy Azure.
  2. Premium Storage nie zlicza odczytów obsługiwanych z pamięci podręcznej, w kierunku liczby we/wy na dysku i przepływności. W związku z tym aplikacja może osiągnąć większą łączną liczbę IOPS i przepływność.

Readwrite
Domyślnie na dyskach systemu operacyjnego jest włączone buforowanie ReadWrite. Niedawno dodaliśmy obsługę buforowania ReadWrite również na dyskach danych. Jeśli używasz buforowania ReadWrite, musisz mieć odpowiedni sposób zapisu danych z pamięci podręcznej na dyskach trwałych. Na przykład SQL Server zapisywanie danych w pamięci podręcznej na dyskach magazynu trwałego samodzielnie. Użycie pamięci podręcznej ReadWrite z aplikacją, która nie obsługuje utrwalania wymaganych danych, może prowadzić do utraty danych, jeśli maszyna wirtualna ulega awarii.

Brak
Obecnie brak jest obsługiwany tylko na dyskach danych. Nie jest obsługiwana na dyskach systemu operacyjnego. Jeśli ustawisz wartość Brak na dysku systemu operacyjnego, zastąpi to wewnętrznie i ustawi na wartość ReadOnly.

Na przykład można zastosować te wytyczne do aplikacji SQL Server na Premium Storage, wykonując następujące czynności:

  1. Skonfiguruj pamięć podręczną "ReadOnly" na dyskach magazynu w warstwie Premium, na których są hostowane pliki danych.
    a. Szybkie odczyty z pamięci podręcznej SQL Server czas wykonywania zapytań, ponieważ strony danych są pobierane z pamięci podręcznej znacznie szybciej niż bezpośrednio z dysków danych.
    b. Obsługa odczytów z pamięci podręcznej oznacza, że jest dostępna dodatkowa przepływność z dysków danych w warstwie Premium. SQL Server tej dodatkowej przepływności do pobierania większej liczby stron danych i innych operacji, takich jak tworzenie/przywracanie kopii zapasowej, ładowanie wsadowe i ponowne kompilowanie indeksów.
  2. Skonfiguruj pamięć podręczną "Brak" na dyskach magazynu w warstwie Premium, na których są hostowane pliki dziennika.
    a. Pliki dziennika mają przede wszystkim operacje z dużym obciążeniem zapisem. W związku z tym nie korzystają z pamięci podręcznej ReadOnly.

Optymalizowanie wydajności maszyn wirtualnych z systemem Linux

W przypadku wszystkich dysków SSD w warstwie Premium lub dysków w warstwie Ultra można wyłączyć "bariery" dla systemów plików na dysku w celu zwiększenia wydajności, gdy wiadomo, że nie ma żadnych pamięci podręcznych, które mogłyby spowodować utratę danych. Jeśli buforowanie dysku platformy Azure jest ustawione na wartość ReadOnly lub None, możesz wyłączyć bariery. Jeśli jednak buforowanie jest ustawione na wartość ReadWrite, bariery powinny pozostać włączone, aby zapewnić trwałość zapisu. Bariery są zwykle domyślnie włączone, ale bariery można wyłączyć przy użyciu jednej z następujących metod w zależności od typu systemu plików:

  • W przypadku systemu plików reiserFS użyj opcji instalacji barrier=none, aby wyłączyć bariery. Aby jawnie włączyć bariery, użyj funkcji barrier=flush.
  • W przypadku rozszerzeń ext3/ext4 użyj opcji instalacji barrier=0, aby wyłączyć bariery. Aby jawnie włączyć bariery, użyj ciągu barrier=1.
  • W przypadku systemu plików XFS użyj opcji instalacji nobarrier, aby wyłączyć bariery. Aby jawnie włączyć bariery, użyj barier. Należy pamiętać, że w nowszych wersjach jądra systemu Linux projekt systemu plików XFS zawsze zapewnia trwałość, a wyłączenie barier nie ma żadnego wpływu.

Rozłożone dyski

Gdy maszyna wirtualna o dużej skali jest dołączona do kilku dysków trwałych magazynu w warstwie Premium, dyski mogą być rozłożone razem w celu zagregowania ich wartości IOPs, przepustowości i pojemności magazynu.

W systemie Windows możesz użyć funkcji Miejsca do magazynowania, aby rozłożone dyski razem. Należy skonfigurować jedną kolumnę dla każdego dysku w puli. W przeciwnym razie ogólna wydajność woluminu rozłożonego może być niższa niż oczekiwano ze względu na nierównomierną dystrybucję ruchu między dyskami.

Ważne: za Menedżer serwera użytkownika można ustawić łączną liczbę kolumn do 8 dla woluminu rozłożonego. W przypadku dołączania więcej niż ośmiu dysków użyj programu PowerShell, aby utworzyć wolumin. Za pomocą programu PowerShell można ustawić liczbę kolumn równą liczbie dysków. Na przykład jeśli w jednym zestawie rozłożonych znajduje się 16 dysków; Określ 16 kolumn w parametrze NumberOfColumns polecenia cmdlet New-VirtualDisk programu PowerShell.

W systemie Linux użyj narzędzia MDADM, aby rozłożone dyski razem. Aby uzyskać szczegółowe instrukcje dotyczące usuwania dysków w systemie Linux, zobacz Konfigurowanie programowej macierzy RAID w systemie Linux.

Rozmiar woluminu rozłożonego
Ważną konfiguracją w przypadku rozłożonych dysków jest rozmiar rozłożonych dysków. Rozmiar rozłożonych danych lub rozmiar bloku jest najmniejszym fragmentem danych, który aplikacja może zaadresowyć na woluminie rozłożonym. Skonfigurowany rozmiar rozłożonych zależy od typu aplikacji i jej wzorca żądania. Jeśli wybierzesz niewłaściwy rozmiar paska, może to prowadzić do niedorównania we/wy, co prowadzi do pogorszenia wydajności aplikacji.

Jeśli na przykład żądanie we/wy wygenerowane przez aplikację jest większe niż rozmiar rozłożonego dysku, system magazynowania zapisuje je w granicach jednostki rozłożonej na więcej niż jednym dysku. Gdy nas czas uzyskać dostęp do tych danych, konieczne będzie poszukują więcej niż jednej jednostki rozłożonej, aby ukończyć żądanie. Skumulowany efekt takiego zachowania może prowadzić do znacznego spadku wydajności. Z drugiej strony, jeśli rozmiar żądania we/wy jest mniejszy niż rozmiar rozłożonych, a jeśli jest losowy, żądania we/wy mogą dodawać się na tym samym dysku, powodując wąskie gardło i ostatecznie obniżając wydajność we/wy.

W zależności od typu obciążenia, które jest uruchomione przez aplikację, wybierz odpowiedni rozmiar paska. W przypadku losowych małych żądań we/wy użyj mniejszego rozmiaru paska. Natomiast w przypadku dużych sekwencyjnych żądań we/wy jest większy rozmiar rozłożony. Sprawdź zalecenia dotyczące rozmiaru paska dla aplikacji, która będzie uruchamiana w Premium Storage. W SQL Server skonfiguruj rozmiar rozłożony 64 KB dla obciążeń OLTP i 256 KB dla obciążeń magazynowania danych. Aby dowiedzieć się więcej, zobacz Performance best practices for SQL Server on Azure VMs (Najlepsze rozwiązania w zakresie wydajności dla maszyn wirtualnych platformy Azure).

Uwaga

Na maszynie wirtualnej serii DS można rozłożone maksymalnie 32 dyski magazynu w warstwie Premium oraz 64 dyski magazynu w warstwie Premium na maszynie wirtualnej serii GS.

Wielowątkowa

Platforma Azure zaprojektowała Premium Storage platformę tak, aby była bardzo równoległa. W związku z tym aplikacja wielowątkowa osiąga znacznie wyższą wydajność niż aplikacja jednowątkowa. Aplikacja wielowątkowa dzieli swoje zadania na wiele wątków i zwiększa wydajność wykonywania przez maksymalne wykorzystanie zasobów maszyny wirtualnej i dysku.

Jeśli na przykład aplikacja działa na jednordzeniowej maszynie wirtualnej z dwoma wątkami, procesor cpu może przełączać się między dwoma wątkami, aby osiągnąć wydajność. Podczas gdy jeden wątek oczekuje na ukończenie we/wy dysku, procesor może przełączyć się do drugiego wątku. W ten sposób dwa wątki mogą osiągnąć więcej niż jeden wątek. Jeśli maszyna wirtualna ma więcej niż jeden rdzeń, powoduje to dalsze zmniejszenie czasu działania, ponieważ każdy rdzeń może wykonywać zadania równolegle.

Być może nie będzie można zmienić sposobu implementacji gotowej aplikacji z jedną wątkową lub wielowątkową. Na przykład SQL Server jest w stanie obsługi wielu procesorów CPU i wielordzeniowych. Jednak SQL Server w jakich warunkach będzie on wykorzystywać co najmniej jeden wątek do przetwarzania zapytania. Może uruchamiać zapytania i tworzyć indeksy przy użyciu wielowątkowych. W przypadku zapytania, które obejmuje łączenie dużych tabel i sortowanie danych przed powrotem do użytkownika, SQL Server prawdopodobnie będzie używać wielu wątków. Jednak użytkownik nie może kontrolować, SQL Server wykonuje zapytanie przy użyciu jednego wątku lub wielu wątków.

Istnieją ustawienia konfiguracji, które można zmienić, aby wpłynąć na to wielowątkowe lub równoległe przetwarzanie aplikacji. Na przykład w przypadku SQL Server jest to maksymalna konfiguracja stopnia równoległości. To ustawienie o nazwie MAXDOP umożliwia skonfigurowanie maksymalnej liczby procesorów, SQL Server używać podczas przetwarzania równoległego. Możesz skonfigurować wartość MAXDOP dla poszczególnych zapytań lub operacji indeksu. Jest to przydatne, gdy chcesz równoważyć zasoby systemu dla aplikacji o krytycznym znaczeniu dla wydajności.

Załóżmy na przykład, że aplikacja używająca SQL Server jednocześnie wykonywane jest duże zapytanie i operacja indeksu. Załóżmy, że chcesz, aby operacja indeksu działała bardziej performant w porównaniu z dużym zapytaniem. W takim przypadku można ustawić wartość MAXDOP operacji indeksu na wyższą niż wartość MAXDOP dla zapytania. Dzięki temu SQL Server więcej procesorów, które może wykorzystać do operacji indeksu, w porównaniu z liczbą procesorów, które może przeznaczyć na duże zapytanie. Pamiętaj, że nie kontrolujesz liczby wątków, które SQL Server będą używać dla każdej operacji. Możesz kontrolować maksymalną liczbę procesorów przeznaczonych do wielowątkowych wątków.

Dowiedz się więcej o stopniach równoległości w SQL Server. Dowiedz się, które ustawienia wpływają na wielowątkową w aplikacji i ich konfiguracje w celu zoptymalizowania wydajności.

Głębokość kolejki

Głębokość kolejki, długość kolejki lub rozmiar kolejki to liczba oczekujących żądań we/wy w systemie. Wartość głębokości kolejki określa, ile operacji we/wy może utworzyć aplikacja, które będą przetwarzane przez dyski magazynu. Ma ona wpływ na wszystkie trzy wskaźniki wydajności aplikacji omówione w tym artykule, tj. IOPS, przepływność i opóźnienie.

Głębokość kolejki i wielowątkowanie są ze sobą ściśle powiązane. Wartość Głębokość kolejki wskazuje, ile wielu wątków może osiągnąć aplikacja. Jeśli głębokość kolejki jest duża, aplikacja może wykonywać więcej operacji jednocześnie, innymi słowy, więcej wielowątkowych. Jeśli głębokość kolejki jest mała, mimo że aplikacja jest wielowątkowa, nie będzie mieć wystarczającej liczby żądań do wykonania współbieżnego.

Zazwyczaj gotowe aplikacje nie umożliwiają zmiany głębokości kolejki, ponieważ nieprawidłowe ustawienie spowoduje więcej szkód niż dobre. Aplikacje ustawią odpowiednią wartość głębokości kolejki, aby uzyskać optymalną wydajność. Jednak ważne jest, aby zrozumieć tę koncepcję, aby można było rozwiązywać problemy z wydajnością aplikacji. Możesz również obserwować skutki głębokości kolejki, uruchamiając narzędzia do testów porównawczych w systemie.

Niektóre aplikacje zapewniają ustawienia wpływające na głębokość kolejki. Na przykład ustawienie MAXDOP (maksymalny stopień równoległości) w SQL Server w poprzedniej sekcji. Funkcja MAXDOP jest sposobem wpływania na głębokość kolejki i wielowątkową, chociaż nie zmienia bezpośrednio wartości głębokość kolejki SQL Server.

Duża głębokość kolejki
Duża głębokość kolejki wytłania więcej operacji na dysku. Dysk z wyprzedzeniem zna następne żądanie w kolejce. W związku z tym dysk może zaplanować operacje z wyprzedzeniem i przetwarzać je w optymalnej kolejności. Ponieważ aplikacja wysyła więcej żądań na dysk, dysk może przetwarzać bardziej równoległe we/wy. Ostatecznie aplikacja będzie mogła osiągnąć wyższą wartość IOPS. Ponieważ aplikacja przetwarza więcej żądań, zwiększa się również łączna przepływność aplikacji.

Zazwyczaj aplikacja może osiągnąć maksymalną przepływność z ponad 8–16 zaległymi liczbami zaległych we/wy na dołączony dysk. Jeśli głębokość kolejki jest jedna, aplikacja nie wypycha wystarczającej ilości we/wy do systemu i będzie przetwarzać mniejszą ilość w danym okresie. Innymi słowy, mniejsza przepływność.

Na przykład w SQL Server maxdop wartość zapytania "4" informuje SQL Server, że może używać do czterech rdzeni do wykonania zapytania. SQL Server określi najlepszą wartość głębokości kolejki i liczbę rdzeni na czas wykonywania zapytania.

Optymalna głębokość kolejki
Bardzo wysoka wartość głębokości kolejki ma również swoje wady. Jeśli wartość głębokości kolejki jest zbyt wysoka, aplikacja spróbuje wywłaszć bardzo dużą wartość IOPS. Jeśli aplikacja nie ma dysków trwałych z wystarczającą aprowizą liczby zaaprowizowanych wartości IOPS, może to negatywnie wpłynąć na opóźnienia aplikacji. Następująca formuła przedstawia relację między liczbami operacji we/wy na wy nas, opóźnieniem i głębokością kolejki.
Diagram przedstawiający równanie opóźnienie czasu I O P S równe głębokości kolejki.

Nie należy konfigurować głębokości kolejki do żadnej wysokiej wartości, ale do optymalnej wartości, która może zapewnić wystarczającą ilość IOPS dla aplikacji bez wpływu na opóźnienia. Jeśli na przykład opóźnienie aplikacji musi być mniejsze niż 1 milisekunda, głębokość kolejki wymagana do osiągnięcia 5000 operacji we/wy na we/wy to QD = 5000 x 0,001 = 5.

Głębokość kolejki dla woluminu rozłożonego
W przypadku woluminu rozłożonego należy zachować wystarczająco dużą głębokość kolejki, aby każdy dysk indywidualnie ma szczytową głębokość kolejki. Rozważmy na przykład aplikację, która wypycha głębokość kolejki 2 i w pasie znajdują się cztery dyski. Dwa żądania We/Wy będą trafiać do dwóch dysków, a pozostałe dwa dyski będą bezczynne. W związku z tym skonfiguruj głębokość kolejki tak, aby wszystkie dyski mogą być zajęte. Formuła poniżej pokazuje, jak określić głębokość kolejki rozłożonych woluminów.
Diagram przedstawiający równanie Q D na dysk razy liczba kolumn na wolumin jest równa Q D woluminu rozłożonego.

Ograniczanie przepływności

Usługa Azure Premium Storage awizuje określoną liczbę IOPS i przepływności w zależności od rozmiaru maszyny wirtualnej i wybranego rozmiaru dysku. Za każdym razem, gdy aplikacja próbuje zwiększyć przepływność lub wydajność we/wy przekracza te limity możliwości maszyny wirtualnej lub dysku, Premium Storage ją ogranicza. Manifestuje się to w postaci obniżonej wydajności w aplikacji. Może to oznaczać większe opóźnienie, niższą przepływność lub niższą wartość operacji we/wy na poziomie operacji we/wy. Jeśli Premium Storage nie ogranicza wydajności, aplikacja może całkowicie nie powieść się przez przekroczenie tego, co jest w stanie osiągnąć jej zasoby. Dlatego aby uniknąć problemów z wydajnością z powodu ograniczania przepustowości, zawsze aprowizuj wystarczające zasoby dla aplikacji. Weź pod uwagę to, co omówiliśmy w sekcjach Rozmiary maszyn wirtualnych i Rozmiary dysków powyżej. Testy porównawcze to najlepszy sposób na ustalić, jakie zasoby będą potrzebne do hostowania aplikacji.

Następne kroki

Jeśli chcesz sprawdzić test porównawczy dysku, zapoznaj się z artykułami na temat testów porównawczych dysku:

Dowiedz się więcej o dostępnych typach dysków:

Aby SQL Server użytkowników, przeczytaj artykuły dotyczące najlepszych rozwiązań dotyczących wydajności SQL Server: