Uruchamianie programu SQL Server 2008 w środowisku Hyper-V Najlepsze rozwiązania i omówienie czynników wpływających na wydajność Artykuł techniczny dotyczący programu SQL Server Autorzy: Lindsey Allen, Mike Ruthruff, Prem Mehra Recenzenci techniczni: Cindy Gross, Burzin Petal, Denny Lee, Michael Thomassy, Sanjay Mishra, Savitha Padmanabhan, Tony Voellm, Bob Ward Opublikowano: październik 2008 r. Dotyczy: SQL Server 2008 Streszczenie: Hyper-V w systemie Windows Server 2008 to zaawansowana technologia wirtualizacji, którą działy informatyczne mogą wykorzystać w firmach do konsolidacji serwerów, które nie są w pełni wykorzystane. Umożliwia to obniżenie kosztów posiadania oraz utrzymanie lub ulepszenie jakości usług. Opierając się na grupie scenariuszy testowych, które są reprezentatywne dla podstawowych funkcji programu SQL Server, niniejszy dokument przedstawia rekomendacje dotyczące najlepszych praktyk w zakresie uruchamiania programu SQL Server w środowisku Windows Hyper-V.
Prawa autorskie Informacje zawarte w tym dokumencie reprezentują pogląd firmy Microsoft Corporation na opisane w nim kwestie, aktualny w momencie publikacji. Ponieważ firma Microsoft musi reagować na zmieniające się warunki rynkowe, niniejszego dokumentu nie należy interpretować jako zobowiązania ze strony firmy Microsoft, zaś firma Microsoft nie może zagwarantować dokładności jakichkolwiek informacji prezentowanych po dacie publikacji niniejszego dokumentu. Niniejszy dokument służy jedynie do celów informacyjnych. FIRMA MICROSOFT NIE UDZIELA ŻADNYCH GWARANCJI, WYRAŻONYCH WPROST, DOMNIEMANYCH LUB USTAWOWYCH ODNOŚNIE INFORMACJI ZAWARTYCH W NINIEJSZYM DOKUMENCIE. Za przestrzeganie wszelkich mających zastosowanie praw autorskich odpowiedzialny jest użytkownik. Nie ograniczając żadnych praw wynikających z praw autorskich, żadna część niniejszego dokumentu nie może być powielana, przechowywana lub wprowadzana do jakiegokolwiek systemu gromadzenia danych, ani przesyłana w jakiejkolwiek postaci ani przy użyciu jakichkolwiek środków (elektronicznych, mechanicznych, fotokopiowania, nagrań i innych), ani w jakimkolwiek celu, bez wyraźnej, pisemnej zgody firmy Microsoft Corporation. Firma Microsoft może być właścicielem patentów, wniosków o przyznanie patentu, znaków towarowych, praw autorskich bądź innych praw własności intelektualnej obejmujących temat niniejszego dokumentu. Z wyjątkiem wyraźnej zgody wyrażonej w pisemnej umowie licencyjnej z firmą Microsoft, nabycie niniejszego dokumentu nie stanowi nabycia przez użytkownika jakiejkolwiek licencji na te patenty, znaki towarowe, prawa autorskie bądź inną własność intelektualną. Jeśli nie podano inaczej, przykładowe firmy, organizacje, produkty, nazwy domen, adresy e-mail, logotypy, ludzie, miejsca i wydarzenia przedstawione w niniejszym dokumencie są fikcyjne, i jakiekolwiek nawiązanie do istniejących firm, organizacji, produktów, nazw domen, adresów e-mail, logotypów, osób, miejsc bądź wydarzeń nie jest zamierzone i nie należy się go doszukiwać. 2008 Microsoft Corporation. Wszelkie prawa zastrzeżone. Microsoft, Hyper-V, SQL Server, Windows i Windows Server są znakami towarowymi należącymi do firm grupy Microsoft. Wszystkie pozostałe znaki towarowe należą do ich prawnych właścicieli.
Spis treści Wstęp... 4 Instalacja i konfiguracja środowiska Hyper-V... 4 Lista kontrolna preinstalacji i rozważania dotyczące technologii Hyper-V... 5 Zalecenia dotyczące konfiguracji magazynu... 5 Metodologia testowania i obciążenia... 6 Obciążenia testowe... 6 Monitorowanie programu SQL Server w konfiguracjach Hyper-V... 8 Wyniki testów, obserwacje i rekomendacje...11 Wpływ na wydajność programu SQL Server uruchomionego w środowisku Hyper-V...11 Nakłady we/wy dla dysków tranzytowych SQLIO...12 Wpływ na wydajność maszyny wirtualnej: obciążenie OLTP...14 Porównanie wydajności kwerend raportowania...19 Operacje bazodanowe...20 Scenariusze konsolidacji programu SQL Server przy użyciu technologii Hyper-V...25 Porównanie konfiguracji magazynu w środowisku konsolidacji...26 Skalowalność instancji wirtualnej...28 Wydajność instancji wirtualnej przy przeciążonych zasobach procesora...30 Porównanie opcji konsolidacji...31 Wnioski...32 Obserwacje...32 Rekomendacje...33 Więcej informacji...34 Dodatek 1: Architektura Hyper-V...35 Dodatek 2 Wymagania sprzętowe...38 Pamięć...38 Procesory...39 Sieć...39 Magazyn...40 Dodatek 3 Konfiguracja sprzętowa...41
Wprowadzenie Oparta na technologii hypervisora funkcja wirtualizacji Hyper-V w systemie operacyjnym Windows Server 2008 stanowi cienką warstwę oprogramowania między sprzętem a systemem operacyjnym, która umożliwia jednoczesne uruchamianie wielu systemów operacyjnych bez żadnych modyfikacji na tym samym komputerze-hoście. Hyper-V to zaawansowana technologia wirtualizacji, którą działy informatyczne mogą wykorzystać w firmach do konsolidacji serwerów, które nie są w pełni wykorzystane. Umożliwia to obniżenie kosztów posiadania (TCO) oraz utrzymanie lub poprawę jakości usług (QoS). Technologia Hyper-V zapewnia większą liczbę potencjalnych typów środowisk projektowania i testowania, które w innym przypadku mogłyby być ograniczone przez dostępność sprzętu. Ogromnym problemem jest już odpowiednie dobranie możliwości sprzętowych w celu konsolidacji bieżących obciążeń i znalezienia miejsca dla rozwoju. Dodanie wirtualizacji do tej kombinacji zwiększa potencjalne wyzwania związane z planowaniem zdolności produkcyjnych. Celem niniejszego dokumentu jest pomoc w rozwiązaniu tych kwestii poprzez skupienie się na dwóch podstawowych aspektach uruchamiania programu Microsoft SQL Server w środowisku Hyper-V: nakłady na zasoby systemowe związane z uruchamianiem programu SQL Server w środowisku Hyper-V, poziom skalowalności funkcji Hyper-V podczas pracy programu SQL Server 2008. Niniejszy oficjalny dokument opisuje serię konfiguracji testowych, które zostały przez nas uruchomione. Reprezentują one szeroką gamę możliwych scenariuszy związanych z uruchamianiem programu SQL Server w środowisku Hyper-V. Dokument zawiera nasze wyniki i obserwacje, a także przedstawia nasze rekomendacje. Wyniki naszych testów pokazały, że program SQL Server 2008 w środowisku Hyper-V zapewnia stabilną wydajność i skalowalność. Uważamy, że technologia Windows Server 2008 Hyper-V stanowi odpowiednią platformę dla programu SQL Server 2008 w przypadku odpowiedniego obciążenia. Wykonywanie obciążeń produkcyjnych w środowisku Hyper-V jest opłacalne pod warunkiem, że obciążenie jest dopasowane do możliwości gościnnej maszyny wirtualnej Hyper-V. Instalacja i konfiguracja środowiska Hyper-V Ta sekcja zawiera uproszczoną listę kontrolną instalacji środowiska Hyper-V. W celu uzyskania dodatkowych informacji na temat technologii Hyper-V należy zapoznać się z listą dodatkowych dokumentów oficjalnych na końcu tego dokumentu, a także z Dodatkiem 3, w którym opisano sprzęt użyty przez nas do testów.
Lista kontrolna preinstalacji i rozważania dotyczące technologii Hyper-V Należy użyć procesora serwera, który obsługuje wirtualizację wspomaganą sprzętową. Można wybrać jedną z dwóch technologii: o Inter VT, o wirtualizacja AMD (AMD-V). Należy upewnić się, że funkcje wirtualizacji wspomaganej sprzętowo i zapobiegania wykonywaniu danych (DEP, Data Execution Prevention) są obecne i uaktywnione. (Można zweryfikować to w ustawieniach systemu BIOS). Rolę serwera Hyper-V należy uruchamiać tylko na partycji głównej systemu operacyjnego Windows. Korzystając z narzędzia DISKPART lub Menedżera woluminów, wszystkie dyski, które zostaną skonfigurowane jako dyski tranzytowe dla gościnnej maszyny wirtualnej, należy ustawić jako offline w partycji głównej. Należy upewnić się, że na gościnnej maszynie wirtualnej są zainstalowane składniki integracji. Podczas konfigurowania sieci dla maszyny wirtualnej należy używać karty sieciowej zamiast tradycyjnej karty sieciowej. Jeśli to możliwe, we wdrożeniach programu SQL Server należy unikać emulowanych urządzeń. Obecność takich urządzeń może spowodować znacznie większe obciążenie procesora w porównaniu z urządzeniami syntetycznymi. Zalecenia dotyczące konfiguracji magazynu Podobnie jak w każdym wdrożeniu programu SQL Server, odpowiednio dopasowane i skonfigurowane we/wy mają ogromny wpływ na wydajność. Konfiguracja magazynu w środowiskach wirtualizacji nie stanowi tu wyjątku. Sprzęt magazynu powinien zapewniać wystarczającą przepustowość we/wy, a także pojemność, aby spełnić obecne i planowane potrzeby maszyn wirtualnych. Podczas konfigurowania magazynu należy postępować zgodnie ze wszystkimi najlepszymi praktykami dotyczącymi wstępnego wdrożenia magazynu. Technologia Hyper-V obsługuje różne typy opcji magazynu. Każdą opcję magazynu można przyłączyć przy użyciu kontrolera IDE lub SCSI. Na potrzeby danych i plików dziennika programu SQL Server została użyta opcja konfiguracji wirtualnego kontrolera SCSI. Program SQL Server wykonuje bardzo dużą liczbę operacji we/wy, dlatego zalecamy ograniczenie wyboru do dwóch opcji o najwyższej wydajności: dysk tranzytowy, wirtualne dyski twarde (VHD) o stałej wielkości. Nie jest zalecane użycie dynamicznych dysków VHD ze względu na wydajność. Wynika to z faktu, że bloki dynamicznego dysku VHD są początkowo wyzerowane, ale nie zajmują żadnego miejsca w pliku. Odczyt z takich bloków powoduje zwrócenie bloku zer. Podczas pierwszego zapisu do bloku stos wirtualizacji musi przydzielić miejsce w pliku VHD dla tego bloku, a następnie zaktualizować metadane. Ponadto przy każdym odwołaniu do istniejącego bloku konieczne jest wyszukanie mapowania bloku
w metadanych. Powoduje to zwiększenie liczy operacji odczytu i zapisu we/wy dysku, a także zwiększenie obciążenia procesora. Dynamiczne powiększanie wymaga również, aby administrator serwera monitorował pojemność dysku, tak aby dostępna była odpowiednia ilość miejsca na dysku w miarę wzrostu wymagań wobec magazynu. Dyski VHD o stałej wielkości można powiększać w razie potrzeby, ale wymaga to wyłączenia gościnnej maszyny wirtualnej na czas wykonywania tej operacji. W scenariuszach testowych na potrzeby tego dokumentu używane były konfiguracje magazynu z dyskami tranzytowymi oraz dyskami VHD o stałej wielkości. We wszystkich konfiguracjach zostały użyte syntetyczne kontrolery SCSI dla gościnnych maszyn wirtualnych. Więcej informacji na temat sprzętu użytego do tych testów zawiera Dodatek 3. (Uwaga: Nie testowano syntetycznych kontrolerów IDE). Metodologia testowania i obciążenia Wybraliśmy serię scenariuszy testowych w celu określenia najlepszych praktyk i uwag dotyczących wydajności na potrzeby uruchamiania aplikacji SQL Server 2008 w środowisku Hyper-V. Pierwszy zestaw scenariuszy testowych został stworzony w celu zrozumienia wpływu na wydajność środowiska natywnego w porównaniu ze środowiskiem gościnnej maszyny wirtualnej Hyper-V. Drugi zestaw scenariuszy testowych zaprojektowano w celu poznania charakterystyki skalowania gościnnej maszyny wirtualnej na jednym serwerze hosta. Obciążenia testowe W celu zmierzenia wydajności w różnych scenariuszach użyto kilku rodzajów obciążeń. W tym oficjalnym dokumencie określenie natywny odnosi się do instalacji systemu Windows bez włączonej funkcji Hyper-V, określenie główna odnosi się do partycji nadrzędnej w konfiguracji Windows Hyper-V z włączoną funkcją Hyper-V, natomiast określenie gościnna maszyna wirtualna oznacza gościnną maszynę wirtualną, która jest obsługiwana na głównej (lub nadrzędnej) partycji systemu Windows. Poniżej przedstawiono główne cele tych scenariuszy: Porównanie wydajności programu SQL Server uruchomionego na partycji głównej oraz przy użyciu gościnnej maszyny wirtualnej. Porównanie wydajności wielu instancji programu SQL Server działających w natywnej instancji systemu z programem SQL Server uruchamiającym pojedyncze instancje w wielu gościnnych maszynach wirtualnych. Uzyskanie informacji dotyczących skalowalności przepustowości obciążenia programu SQL Server w miarę zwiększania liczby gościnnych maszyn wirtualnych uruchamianych na pojedynczej partycji głównej. W poniższej tabeli przedstawiono obciążenia użyte podczas tych testów, ich charakterystykę oraz scenariusze docelowe dla każdego obciążenia.
Tabela 1: Obciążenia i scenariusze Obciążenie Charakterystyka ogólna Scenariusze docelowe SQLIO Generowanie obciążenia we/wy. Porównanie wydajności we/wy instancji natywnej z gościnną maszyną wirtualną. Obciążenie OLTP Obciążenie raportowania Obciążenie operacyjne programu SQL Server Obciążenie typu OLTP symulujące aplikację maklerską do obsługi klientów. Więcej informacji na temat konfiguracji sprzętowej zawiera Dodatek 3. Kwerendy raportowania, które powodują wykorzystanie dużych ilości zasobów procesora i we/wy. Tworzenie/przywracanie kopii zapasowych, ponowne tworzenie indeksu, DBCC CHECKDB. Porównanie wydajności obciążenia między instancją natywną, partycją główną a gościnną maszyną wirtualną. Porównanie wielu instancji programu SQL Server działających w natywnej instancji systemu Windows w porównaniu z wieloma gościnnymi maszynami wirtualnymi, z których każda obsługuje pojedynczą instancję programu SQL Server. Skalowanie przepustowości obciążenia wraz ze wzrostem liczby gościnnych maszyn wirtualnych. Porównanie wydajności kwerend raportowania między instancją natywną, partycją główną a gościnną maszyną wirtualną. Porównanie wydajności operacji bazodanowych między instancją natywną, partycją główną a gościnną maszyną wirtualną. Poniższa lista zawiera bardziej szczegółowe informacje dotyczące scenariuszy związanych z każdym typem obciążenia: Test SQLIO: SQLIO to narzędzie służące do określania wydajności we/wy danej konfiguracji. Ten scenariusz testowy został stworzony w celu określenia nakładów we/wy podczas uruchamiania gościnnej maszyny wirtualnej przy użyciu dysków tranzytowych jako konfiguracji magazynu. Obciążenie OLTP. Ten scenariusz testowy: o Porównuje wydajność programu SQL Server działającego natywnie w systemie Windows z wydajnością programu uruchomionego w gościnnej maszynie
wirtualnej. Do celów tego porównania zarówno instancja natywna, jak i gościnna maszyna wirtualna zostały skonfigurowane przy użyciu analogicznej konfiguracji sprzętowej. o Porównuje wydajność programu SQL Server przy użyciu różnych konfiguracji magazynu dla danych i plików dziennika. Porównanie konfiguracji z dyskami tranzytowymi i konfiguracji z dyskami VHD, a także innych konfiguracji bazowych macierzy magazynów (tzn. konfiguracji ze współużytkowanymi i dedykowanymi magazynami). o Porównuje wydajność wielu instancji programu SQL Server działających natywnie w systemie Windows z analogiczną liczbą gościnnych maszyn wirtualnych, z których każda jest skonfigurowana z użyciem pojedynczej instancji programu SQL Server. o Uzyskanie informacji dotyczących skalowania obciążenia w miarę dodawania kolejnych gościnnych maszyn wirtualnych do partycji głównej pojedynczego serwera fizycznego. W tym przypadku dokonano obserwacji następujących przypadków: liczba fizycznych rdzeni procesora równa sumie logicznych rdzeni procesora wszystkich gościnnych maszyn wirtualnych; liczba fizycznych rdzeni procesora mniejsza niż suma logicznych rdzeni procesora wszystkich gościnnych maszyn wirtualnych (nazywane przeciążeniem zasobów procesora). Obciążenie raportowania: ten scenariusz porównuje wydajność programu SQL Server działającego natywnie w systemie Windows z wydajnością programu SQL Server uruchomionego w gościnnej maszynie wirtualnej z użyciem analogicznej konfiguracji sprzętowej. Operacje bazodanowe: ten scenariusz porównuje wydajność programu SQL Server działającego natywnie w systemie Windows z wydajnością programu SQL Server uruchomionego w gościnnej maszynie wirtualnej z użyciem analogicznej konfiguracji sprzętowej. W przypadku scenariuszy z użyciem obciążenia OLTP wykorzystano kilka różnych poziomów obciążenia w celu zaobserwowania różnic przy zmiennych poziomach procesora. Szczegóły tych poziomów obciążenia zostaną omówione w dalszej części tego oficjalnego dokumentu. Monitorowanie programu SQL Server w konfiguracjach Hyper-V Istnieje kilka kwestii, które należy rozważyć podczas monitorowania wydajności obciążeń programu SQL Server działającego w konfiguracjach Hyper-V, kiedy używane jest narzędzie Monitor systemu Windows (nazywane często perfmon). Aby uzyskać rzeczywisty pomiar wykorzystania zasobów, należy użyć liczników Hyper-V udostępnianych przez system Windows w partycji głównej. Szczegółowy opis monitorowania funkcji Hyper-V wykracza poza zakres tego dokumentu. Więcej informacji na ten temat zawiera Dodatek 3. Podczas testów dokonaliśmy kilku obserwacji dotyczących monitorowania wydajności. Większość rozważań jest powiązana z pomiarami wykorzystania procesora. Podczas monitorowania wykorzystania procesora na serwerze z uruchomioną funkcją Hyper-V należy
używać liczników procesora Hyper-V, które są udostępniane na partycji głównej. Funkcja Hyper-V udostępnia trzy podstawowe liczniki związane z wykorzystaniem procesora: Procesor logiczny funkcji hypervisor (Hyper-V): zapewnia najdokładniejszy pomiar łącznych zasobów procesora wykorzystanych przez cały serwer fizyczny. Główny procesor wirtualny funkcji hypervisor (Hyper-V): zapewnia najdokładniejszy pomiar łącznych zasobów procesora wykorzystanych przez partycję główną. Procesor wirtualny funkcji hypervisor (Hyper-V): zapewnia najdokładniejszy pomiar łącznych zasobów procesora wykorzystanych przez określone gościnne maszyny wirtualne. Możliwe jest monitorowanie tradycyjnych liczników Czas procesora (%), ale ze względu na fakt, że warstwy wirtualizacji nie są ujawniane dla tych liczników procesora, mogą one nie odzwierciedlać dokładnie wykorzystanych zasobów procesora. Podczas monitorowania wydajności należy mierzyć wykorzystanie procesora przy użyciu liczników Hyper-V dla dowolnego serwera z uruchomioną rolą Hyper-V i włączoną funkcją hypervisora. Więcej informacji można znaleźć w serii artykułów na blogu Tony'ego Voellma poświęconych monitorowaniu wydajności funkcji Hyper-V. Poszczególne liczniki zostały przedstawione na rysunku 1. Górny zestaw liczników na tym rysunku (\\SQLBP08R900) obejmuje liczniki monitorowane na partycji głównej, podczas gdy liczniki w dolnym zestawie (\\sqlhv1) są monitorowane z perspektywy gościnnej maszyny wirtualnej. Należy pamiętać, że w tym przykładzie istnieje 16 fizycznych rdzeni procesora, które są widoczne dla partycji głównej, oraz cztery logiczne rdzenie procesora, które są widoczne dla gościnnej maszyny wirtualnej. Należy również zwrócić uwagę, że choć na partycji głównej działają dwie gościnne maszyny wirtualne, to ze względu na ograniczoną ilość miejsca na rysunku przedstawiono tylko jedną taką maszynę. Cztery liczniki procesora logicznego dla drugiej maszyny wirtualnej znajdują się po prawej stronie wykresu. Rysunek 1: Liczniki perfmon dla funkcji Hyper-V
Aby uzyskać więcej informacji na temat monitorowania i przedstawionych kwestii, należy zapoznać się z sekcją poświęconą wirtualizacji w wytycznych dotyczących strojenia wydajności systemu Windows 2008 oraz z blogami poświęconymi licznikom wydajności funkcji Hyper-V. Jeśli chodzi o monitorowanie programu SQL Server, nie ma żadnych specjalnych uwag dotyczących pracy w gościnnej maszynie wirtualnej. Liczniki programu SQL Server stanowią zwykle pomiar zużycia (zasoby specyficzne dla programu SQL Server) lub przepustowości. Ponadto liczniki programu SQL Server nie są udostępniane dla partycji głównej w przypadku uruchomienia w gościnnej maszynie wirtualnej, dlatego należy monitorować je z poziomu tej maszyny. Pomiar wydajności we/wy różni się w zależności od sposobu konfiguracji magazynu gościnnej maszyny wirtualnej. Czas oczekiwania to pomiar upływającego czasu, który może zostać określony z rozsądną dokładnością zarówno na poziomie partycji głównej, jak i gościnnej maszyny wirtualnej. Poniżej przedstawiono kilka ogólnych uwag dotyczących monitorowania wydajności dysku: W celu monitorowania wydajności we/wy można użyć liczników dysków fizycznych lub logicznych w obrębie gościnnej maszyny wirtualnej. Zaobserwowaliśmy minimalne różnice między wartościami zgłoszonymi przez liczniki na partycji głównej i liczniki w gościnnej maszyny wirtualnej. Jednakże w przypadku monitorowania z poziomu gościnnej maszyny wirtualnej zaobserwowaliśmy niewiele wyższe wartości czasu opóźnienia (Średni czas dysku w s/odczyt i zapis) niż w przypadku monitorowania z poziomu partycji głównej. Jest to spowodowane tym, że z perspektywy maszyny wirtualnej zakończenie operacji we/wy wymaga minimalnie dłuższego czasu. Jeśli magazyn gościnnej maszyny wirtualnej został skonfigurowany jako tranzytowy, dysk będzie w trybie offline na poziomie partycji głównej i nie będzie pojawiał się wśród liczników dysku logicznego w obrębie partycji głównej. Aby monitorować wydajność dysków tranzytowych na poziomie partycji głównej, należy użyć liczników dysku fizycznego. W czasie przeprowadzania tych testów występowały znane problemy z licznikami dysku fizycznego w systemie Windows Server 2008 w przypadku użycia rozwiązań wielościeżkowych. Problemy te zostały rozwiązane w najnowszej wersji GDR programu System Center Virtual Machine Manager. Jeśli gościnne maszyny wirtualne są skonfigurowane w celu użycia plików VHD na potrzeby magazynowania, a te pliki VHD znajdują się na typowych dyskach fizycznych, monitorowanie liczników dysku z poziomu gościnnej maszyny wirtualnej zapewni szczegółowe informacje dotyczące we/wy określonego pliku VHD. Monitorowanie woluminu zawierającego wszystkie pliki VHD na partycji głównej zapewni zagregowane wartości dla wszystkich operacji we/wy skierowanych do dysku lub woluminu. Tabela 2 przedstawia typy liczników, które są gromadzone podczas wykonywania zestawu testów związanych z obciążeniem OLTP. W tabeli widoczne są różnice liczników wydajności podczas monitorowania na poziomie gościnnej maszyny wirtualnej i partycji głównej.
Tabela 2: Liczniki i obciążenia Poziom pomiaru liczników Gościnna maszyna wirtualna Partycja główna Pomiar Niskie obciążenie OLTP Średnie obciążenie OLTP Wysokie obciążenie OLTP Transakcje/s 352 546 658 Zadania wsadowe/s 565 897 1075 Czas procesora (%) 34,2 65,3 84,2 Czas uprzywilejowany (%) 5,1 8 8,4 Logiczny Średni czas dysku w s/odczyt (wartość _Total) 0,005 0,006 0,007 Logiczny Odczyty dysku/s (wartość _Total) 1053 1597 1880 Czas procesora (%) 4,9 7,8 11,2 Czas uprzywilejowany (%) 3,6 6,1 7,3 Procesor logiczny Hyper-V Czas procesu hypervisor (%) 4 4,8 4,3 Procesor logiczny Hyper-V Łączny czas procesu (%) 39,1 68,7 86,5 Procesor logiczny Hyper-V Czas procesu gościnnej maszyny wirtualnej (%) 35,1 63,9 82,1 Fizyczny Średni czas dysku w s/odczyt (wartość _Total) 0,005 0,006 0,006 Fizyczny Odczyty dysku/s (wartość _Total) 1053 1597 1880 Zadania wsadowe na procesor (%) (Zadania wsadowe/s / Czas procesu gościnnej maszyny wirtualnej (%)) 16,1 14 13,1 Uwaga: Liczniki funkcji Hyper-V mierzone na poziomie partycji głównej są zagregowane dla wszystkich uruchomionych gościnnych maszyn wirtualnych. Wyniki testów, obserwacje i rekomendacje W tej sekcji zostaną przedstawione i przeanalizowane wyniki testów. Można tu również znaleźć szczegółowe informacje dotyczące naszych rekomendacji i obserwacji na temat uruchamiania programu SQL Server w środowisku wirtualizacji. Sekcja ta składa się z dwóch części. Pierwsza z nich omawia podstawowe nakłady na zasoby związane z uruchamianiem programu SQL Server w środowisku Hyper-V. Druga część omawia wpływ konsolidacji programu SQL Server jako instancji wirtualnych.
Wpływ na wydajność programu SQL Server uruchomionego w środowisku Hyper-V Pierwsza grupa scenariuszy testowych została stworzona w celu zrozumienia wpływu, jaki ma na wydajność uruchamianie programu SQL Server w oczyszczonym środowisku Hyper-V. Bazowe testy zostały wykonane na trzy sposoby: w natywnym środowisku Windows z wyłączoną funkcją Hyper-V, na partycji głównej z włączoną funkcją Hyper-V oraz w pojedynczej gościnnej maszynie wirtualnej. We wszystkich tych przypadkach konfiguracja sprzętowa była identyczna. Uwaga: Określenie instancja natywna odnosi się do instancji programu SQL Server uruchomionej w natywnym środowisku Windows, natomiast określenie instancja wirtualna odnosi się do instancji programu SQL Server uruchomionej w gościnnej maszynie wirtualnej. Niniejsza sekcja obejmuje następujące scenariusze testowe: określenie nakładów we/wy dysków tranzytowych przy użyciu SQLIO; porównanie wpływu na wydajność OLTP w przypadku pojedynczej instancji natywnej i instancji wirtualnej; porównanie wpływu na wydajność kwerend raportowania w przypadku pojedynczej instancji natywnej i instancji wirtualnej; obserwacja wpływu wirtualizacji na typowe operacje bazodanowe: o tworzenie i przywracanie skompresowanych kopii zapasowych, o ponowne tworzenie indeksu, o DBCC CHECKDB. Nakłady we/wy dla dysków tranzytowych SQLIO Nakłady we/wy stanowiły poważne wyzwanie w środowiskach wirtualizacji. Często powodowały one spowolnienie aplikacji intensywnie wykonujących operacje we/wy, takich jak SQL Server. Technologia zmieniła się w przypadku funkcji Hyper-V. Aby zrozumieć scenariusz najlepszego przypadku, nasz pierwszy scenariusz testowy skupił się na nakładach we/wy przy użyciu najbardziej zoptymalizowanej konfiguracji we/wy dedykowanych dysków tranzytowych. Konfiguracja z dyskami tranzytowymi została wybrana, ponieważ zapewnia najkrótszą ścieżkę kodu między hostem a podsystemem we/wy. W czasie testów identyczna liczba fizycznych osi dysków została przypisana do partycji głównej i gościnnej maszyny wirtualnej. W czasie wielokrotnych testów losowego i sekwencyjnego we/wy odkryliśmy, że wpływ na wydajność operacji we/wy środowiska Hyper-V korzystającego z dysków tranzytowych jest zerowy lub minimalny. Więcej informacji, włącznie ze szczegółową analizą wydajności dysków tranzytowych i wirtualnych dysków twardych, zawiera oficjalny dokument Windows Server 2008 Hyper-V Virtual Hard Disk and Pass-through Disk Performance, którego autorami są Tony Voellm i Liang Yang. Dodatkowe informacje dotyczące analizy wydajności magazynu funkcji Hyper-V można znaleźć w tym miejscu (http://blogs.msdn.com/tvoellm/archive/2008/09/24/what-hyper-v-storage-is-best-for-you-show-methe-numbers.aspx).
Konfiguracja magazynu Konfiguracja dysków tranzytowych dla partycji głównej i maszyny wirtualnej była identyczna. Każda konfiguracja otrzymała tę samą liczbę jednostek LUN z macierzy magazynów, która używała tej samej ilości zasobów dysku fizycznego. Na poziomie dysku nie odbywało się współużytkowanie, tzn. nie było współużytkowania osi dysków między jednostkami LUN. Rysunek 2 przedstawia konfigurację w obu przypadkach. Rysunek 2: Tranzytowa konfiguracja magazynu Wydajność konfiguracji tranzytowej Aby uzyskać przepustowość bazową, ten sam zestaw testów SQLIO został uruchomiony na wszystkich gościnnych maszynach wirtualnych i na partycji głównej. Rysunki 3 i 4 przedstawiają wyniki testów losowego i sekwencyjnego we/wy przy użyciu SQLIO. Na potrzeby tego scenariusza testowego wybraliśmy dwa typowe rozmiary we/wy SQL (8 KB i 64 KB).
Rysunek 3: Losowe, tranzytowe we/wy 8 KB Rysunek 4: Sekwencyjne, tranzytowe we/wy 64 KB Wpływ na wydajność maszyny wirtualnej: obciążenie OLTP Celem tego scenariusza testowego był pomiar wpływu programu SQL Server 2008 uruchomionego w maszynie wirtualnej przy użyciu obciążenia OLTP, które symuluje aplikację maklerską. Więcej informacji na temat konfiguracji sprzętowej użytego do tego testu zawiera Dodatek 3. Trzy poziomy obciążeń zostały uruchomione dla konfiguracji bazowej, partycji głównej i gościnnej maszyny wirtualnej. Konfiguracja bazowa obsługuje instancję programu
SQL na serwerze natywnym z wyłączoną funkcją Hyper-V. W tym celu wyłączono parametr hypervisorlaunchtype (tzn. bcdedit /set hypervisorlaunchtype off), co wymaga ponownego uruchomienia systemu Windows w celu zastosowania zmiany. Poziomy obciążenia scenariusza testowego zostały zdefiniowane według procentowej wartości wykorzystania procesora. Ponieważ całkowicie obciążony procesor rzadko występuje w środowiskach produkcyjnych, skupiliśmy się na poziomach obciążenia procesora w zakresie od 20% do 80%. Docelowe wartości wykorzystania procesora dla każdego poziomu obciążenia zostały zdefiniowane w tabeli 3. Tabela 3: Docelowe wartości wykorzystania procesora Szacowana wartość Obciążenie testowe docelowa procesora OLTP niskie 30% OLTP średnie 50%-60% OLTP wysokie 80% Ponieważ gościnne maszyny wirtualne Hyper-V obsługują do czterech procesorów logicznych, w celu dokonania bezpośredniego porównania skonfigurowano hosta w celu użycia czterech rdzeni, korzystając z ustawienia systemu BIOS (NUMPROC=4). Aby zrozumieć wpływ na konfigurację magazynu, dwie maszyny wirtualne zostały skonfigurowane przy użyciu dwóch konfiguracji magazynu Hyper-V zalecanych dla obciążenia programu SQL Server (dyski tranzytowe i stałe dyski VHD). Wpływ na przepustowość i procesor Testy konfiguracji bazowej na trzech poziomach obciążenia zostały wykonane w natywnym środowisku Windows Server 2008 z wyłączoną rolą Hyper-V. Ten sam zestaw obciążeń został uruchomiony na partycji głównej z włączoną funkcją Hyper-V, w gościnnej maszynie wirtualnej skonfigurowanej przy użyciu magazynu z dyskami tranzytowymi, a następnie w gościnnej maszynie wirtualnej wykorzystującej magazyn ze stałymi dyskami VHD. Tabela 4 przedstawia względną liczbę żądań wsadowych na procesor (%) i nakłady we wszystkich przypadkach testowych. System skalował się bardzo dobrze we wszystkich przypadkach testowych w tym scenariuszu. Każda konfiguracja osiągnęła identyczną przepustowość, choć w przypadku maszyny wirtualnej widoczny był wyższy koszt procesora w celu osiągnięcia tej samej przepustowości. Wydajność dysków tranzytowych i stałych dysków VHD była bardzo podobna, a wariancja nakładów różniła się o mniej niż jeden punkt procentowy. Tabela 4 przedstawia także nakłady procesora wynikające z uruchomienia obciążenia OLTP w maszynie wirtualnej. Zaobserwowaliśmy, że nakłady wyrażane jako wartość procentowa były wyższe w przypadku mniejszego obciążenia. Z obsługą maszyny wirtualnej związana