SQL Server 2008 in een Hyper-V-omgeving Best practices en aandachtspunten voor prestaties SQL Server, technisch artikel
Auteurs: Lindsey Allen, Mike Ruthruff, Prem Mehra Technische reviewers: Cindy Gross, Burzin Petal, Denny Lee, Michael Thomassy, Sanjay Mishra, Savitha Padmanabhan, Tony Voellm, Bob Ward
Gepubliceerd: oktober 2008 Van toepassing op: SQL Server 2008
Samenvatting: Hyper-V in Windows Server 2008 is een krachtige virtualisatietechnologie die in bedrijven kan worden ingezet om servers die te weinig worden gebruikt te consolideren, de totale eigendomskosten (TCO) te verlagen en de kwaliteit van de services te handhaven of te verbeteren. Op basis van een reeks testscenario's die enkele SQL Server-toepassingen nabootsen, geeft dit document u enkele aanbevelingen voor best practices wat betreft het uitvoeren van SQL Server in een Windows Hyper-V-omgeving.
Copyright De informatie in dit document vertegenwoordigt de huidige visie van Microsoft Corporation op zaken die ten tijde van publicatie actueel waren. Omdat Microsoft continu inspeelt op marktontwikkelingen, legt Microsoft zich niet vast op de inhoud van dit document en kan Microsoft niet garanderen dat alle informatie in dit document na de datum van publicatie nog nauwkeurig en correct is. Dit artikel dient uitsluitend ter informatie. MICROSOFT BIEDT GEEN GARANTIES MET BETREKKING TOT DE INFORMATIE IN DIT DOCUMENT, ONGEACHT OF DEZE GARANTIES EXPLICIET, IMPLICIET OF WETTELIJK ZIJN. Het is de verantwoordelijkheid van de gebruiker zich te houden aan alle geldende auteurswetten. Behoudens de in of krachtens de auteurswet gestelde uitzonderingen mag niets uit deze uitgave worden verveelvoudigd en/of openbaar gemaakt door middel van druk, fotokopie, microfilm of op welke andere wijze dan ook en evenmin in een gegevensopzoeksysteem worden opgeslagen zonder voorafgaande schriftelijke toestemming van Microsoft Corporation. Microsoft kan octrooien, octrooiaanvragen, handelsmerken, auteursrechten of andere intellectuele eigendomsrechten hebben die op de inhoud van dit document van toepassing zijn. Dit document geeft u geen enkel gebruiksrecht op deze octrooien, handelsmerken, auteursrechten of andere intellectuele eigendomsrechten, behalve wanneer dit uitdrukkelijk is bepaald in een schriftelijke licentieovereenkomst van Microsoft. Tenzij anders vermeld zijn de hier opgevoerde bedrijven, organisaties, producten, domeinnamen, e-mailadressen, logo's, personen, plaatsen en evenementen fictief, en is iedere vergelijking met bestaande bedrijven, organisaties, producten, domeinnamen, e-mailadressen, logo's, personen, plaatsen of evenementen onbedoeld of ongeïmpliceerd.
© 2008 Microsoft Corporation. Alle rechten voorbehouden.
Microsoft, Hyper-V, SQL Server, Windows en Windows Server zijn handelsmerken van de Microsoft-groep.
Alle andere handelsmerken zijn het eigendom van hun respectieve eigenaren.
Inhoud Inleiding......................................................................................................................................................... 4 Installatie en configuratie van Hyper-V-configuraties .................................................................................. 4 Voorinstallatiechecklist en aandachtspunten voor Hyper-V .................................................................... 5 Aanbevelingen voor de opslagconfiguratie .............................................................................................. 5 Testmethoden en werkbelasting .................................................................................................................. 6 Werkbelastingen voor de tests ................................................................................................................. 6 SQL Server controleren in Hyper-V-configuraties..................................................................................... 8 Testresultaten, observaties en aanbevelingen ........................................................................................... 11 Prestatieoverhead door het gebruik van SQL Server in Hyper-V............................................................ 11 I/O-overhead bij gebruik van doorgangsschijven - SQLIO .................................................................. 12 Prestatieoverhead virtuele machine: OLTP-werkbelasting ................................................................ 14 Prestaties bij rapportagequery's vergelijken ..................................................................................... 18 Databasehandelingen ......................................................................................................................... 19 SQL Server-consolidatiescenario's met Hyper-V..................................................................................... 23 Opslagconfiguraties in de consolidatieomgeving vergelijken............................................................. 24 Schaalbaarheid virtueel exemplaar .................................................................................................... 26 Prestaties virtueel exemplaar met te zwaar belaste CPU-bronnen.................................................... 28 Consolidatieopties vergelijken............................................................................................................ 29 Conclusie ..................................................................................................................................................... 30 Observaties ............................................................................................................................................. 30 Aanbevelingen ........................................................................................................................................ 31 Voor meer informatie ............................................................................................................................. 32 Bijlage 1: Hyper-V-architectuur .................................................................................................................. 33 Bijlage 2: Hardwarevereisten...................................................................................................................... 36 Geheugen................................................................................................................................................ 36 Processors ............................................................................................................................................... 37 Netwerken .............................................................................................................................................. 37 Opslag ..................................................................................................................................................... 37 Bijlage 3: Hardwareconfiguratie ................................................................................................................. 39
Inleiding De virtualisatiefunctie Hyper-V™ in het besturingssysteem Windows Server® 2008, die op de hypervisortechnologie is gebaseerd, is een dunne softwarelaag tussen de hardware en het besturingssysteem waardoor het mogelijk wordt meerdere besturingssystemen tegelijkertijd op één hostcomputer uit te voeren. Hyper-V is een krachtige virtualisatietechnologie die in bedrijven kan worden ingezet om servers die te weinig worden gebruikt te consolideren, waardoor de totale eigendomskosten (TCO) worden verlaagd en de kwaliteit van de service (QoS) wordt gehandhaafd of zelfs verbeterd. Hyper-V bevat verschillende typen potentiële ontwikkel- en testomgevingen die in andere gevallen door de beschikbare hardware zouden worden beperkt. Het is normaal gesproken al moeilijk genoeg om de hardware af te stemmen op het consolideren van de huidige werkbelastingen en tegelijkertijd ruimte voor groei te reserveren. Door virtualisatie in te zetten, verbetert u de mogelijkheden voor het plannen van de potentiële capaciteit. Het doel van dit document is deze mogelijkheden te bekijken door ons te richten op de twee belangrijkste gebieden met betrekking tot het gebruik van Microsoft® SQL Server® in een Hyper-V-omgeving: • •
De overhead van de systeembronnen als gevolg van het gebruik van SQL Server in een Hyper-V-omgeving Hoe schaalbaar Hyper-V is als het op SQL Server 2008 wordt uitgevoerd
In dit artikel wordt een aantal testconfiguraties beschreven die we hebben uitgevoerd en die een aantal verschillende scenario's voorstellen met betrekking tot SQL Server in een Hyper-Vomgeving. We beschrijven onze resultaten en observaties en geven een aantal aanbevelingen. Uit de testresultaten blijkt dat het gebruik van SQL Server 2008 in een Hyper-V-omgeving leidt tot stabiele prestaties en schaalbaarheid. Wij zijn dan ook van mening dat Windows Server 2008 Hyper-V een solide platform is voor SQL Server 2008 en de bijbehorende werkbelasting. Het is zinvol de productiewerkbelasting onder een Hyper-V-omgeving uit te voeren, zolang de werkbelasting de capaciteit van de virtuele Hyper-V-gastmachine niet overschrijdt.
Installatie en configuratie van Hyper-V-configuraties Deze paragraaf bevat een vereenvoudigde installatiechecklist voor Hyper-V. Raadpleeg voor meer informatie over Hyper-V de aanvullende artikelen die aan het eind van dit artikel en in bijlage 3 worden vermeld, waarin u een beschrijving vindt van de hardware die we voor onze tests hebben gebruikt.
Voorinstallatiechecklist en aandachtspunten voor Hyper-V •
• • • • • •
Gebruik een serverprocessor met ondersteuning voor hardwarematige virtualisatie. U kunt kiezen uit: o Inter VT o AMD Virtualization (AMD-V) Zorg ervoor dat virtualisatie met hardwareondersteuning en DEP (Data Execution Prevention) beschikbaar zijn en zijn ingeschakeld. (Deze instellingen kunt u in de BIOS controleren.) Voer de serverrol Hyper-V alleen uit op de hoofdpartitie van het Windows®besturingssysteem. Stel alle schijven die voor de virtuele gastmachine als doorgangsschijven worden geconfigureerd met DISKPART of Volumebeheer in de hoofdpartitie in op offline. Zorg ervoor dat de integratiecomponenten (“enlightenments”) op de virtuele gastmachine zijn geïnstalleerd. Gebruik geen legacynetwerkadapter bij het configureren van het netwerk voor de virtuele machine. Voorkom, indien mogelijk, geëmuleerde apparaten voor SQL Server-toepassingen. Het gebruik van geëmuleerde apparaten kan namelijk leiden tot een aanzienlijke toename van de CPU-overhead in vergelijking met synthetische apparaten.
Aanbevelingen voor de opslagconfiguratie Zoals bij iedere implementatie van SQL Server is een I/O met de juiste grootte en de juiste configuratie essentieel voor goede prestaties. Het configureren van de opslag voor virtuele omgevingen vormt daarop geen uitzondering. De opslaghardware moet voorzien zijn van voldoende I/O-doorvoercapaciteit en bovendien moet de opslagcapaciteit voldoen aan de huidige en toekomstige behoeften van de virtuele machines. Volg alle best practices voor de opslag voorafgaand aan de implementatie bij het configureren van de opslag. Hyper-V biedt ondersteuning voor verschillende typen opslagopties. Iedere opslagoptie kan via een IDE- of SCSI-controller worden aangesloten. Voor SQL Server-gegevensbestanden en logbestanden hebben we de configuratieoptie met een virtuele SCSI-controller gebruikt. SQL Server is I/O-intensief, dus raden wij het gebruik van de twee best presterende opties aan: •
Doorgangsschijven
Dynamische VHD's (Virtual Hard Disks) met een vaste grootte worden om prestatieredenen niet aanbevolen. Bij dynamische VHD's zijn de blokken in eerste instantie nulblokken en deze worden niet ondersteund door werkelijke ruimte in het bestand. Leesbewerkingen van zulke blokken retourneren een blok met nullen. Als er voor de eerste keer naar een blok wordt geschreven, moet de virtualisatiestack ruimte voor het blok in het VHD-bestand toewijzen en vervolgens de metagegevens bijwerken. Daarnaast moet de bloktoewijzing, telkens wanneer er
naar een bestaand blok wordt verwezen, in de metagegevens worden opgezocht. Dit verhoogt het aantal schijf-I/O's voor lees- en schrijfactiviteiten en het CPU-gebruik. Bij dynamische groei moet de serverbeheerder ook de schijfcapaciteit controleren om ervoor te zorgen dat er voldoende opslagruimte op de schijf beschikbaar is, omdat de opslagvereisten toenemen. VHD's met een vaste grootte kunnen worden uitgebreid als dat nodig is. Hiervoor moet de virtuele gastmachine echter wel worden uitgeschakeld. In de testscenario's voor dit artikel hebben we zowel een opslagconfiguratie met doorgangsschijven als een opslagconfiguratie met een VHD's met een vaste grootte gebruikt. In alle configuraties zijn synthetische SCSI-controllers gebruikt voor de virtuele gastmachines. Raadpleeg bijlage 3 voor meer informatie over de hardware die we voor deze tests hebben gebruikt. (Opmerking: er zijn geen tests met een synthetische IDE uitgevoerd.)
Testmethoden en werkbelasting We hebben een aantal testscenario's geselecteerd om de best practices en aandachtspunten voor prestaties te bepalen wat betreft het gebruik van SQL Server 2008-toepassingen in een Hyper-Vomgeving. Onze eerste reeks testscenario's is ontwikkeld om de prestatieoverhead vast te stellen in een oorspronkelijke omgeving tegenover een omgeving met een virtuele gastmachine met Hyper-V. Onze tweede reeks testscenario's is ontwikkeld om de kenmerken vast te stellen van het schalen van een virtuele gastmachine op één hostserver.
Werkbelastingen voor de tests Voor het meten van de prestaties van de verschillende scenario's zijn verschillende soorten werkbelasting gebruikt. In dit artikel heeft oorspronkelijk betrekking op een Windows-installatie zonder Hyper-V; de hoofdpartitie is de bovenliggende partitie in een Windows Hyper-Vconfiguratie waarbij Hyper-V is ingeschakeld en de virtuele gastmachine is de virtuele gastmachine die in de hoofdpartitie van Windows wordt gehost. Bij deze scenario's lag de nadruk voornamelijk op: • • •
De prestaties van SQL Server op de hoofdpartitie vergelijken met de prestaties van SQL Server op een virtuele gastmachine. De prestaties van meerdere exemplaren van SQL Server op één oorspronkelijk Windows-exemplaar vergelijken met steeds één exemplaar van SQL Server op meerdere virtuele gastmachines. De schaalbaarheid van de doorvoercapaciteit van de SQL Server-werkbelasting observeren terwijl het aantal virtuele gastmachines op één hoofdpartitie wordt vergroot.
Onderstaande tabel bevat de verschillende soorten werkbelasting die voor de tests zijn gebruikt en de algemene kenmerken en doelscenario's voor ieder type werkbelasting.
Tabel 1: werkbelastingen en scenario's
Werkbelasting
Algemene kenmerken
Doelscenario's
SQLIO
Genereert de IO-werkbelasting.
•
De I/O-prestaties van een oorspronkelijke machine vergelijken met een virtuele gastmachine.
OLTP-werkbelasting
OLTP-werkbelasting waarbij een klantgerichte makelaarstoepassing wordt gesimuleerd. Zie bijlage 3 voor meer informatie over de hardwareconfiguratie.
•
Vergelijking van de werkbelastingprestaties tussen een oorspronkelijke Windows-installatie, een hoofdpartitie en een virtuele gastmachine. Meerdere exemplaren van SQL Server op één oorspronkelijk Windowsexemplaar vergelijken met meerdere virtuele gastmachines met één exemplaar van SQL Server. De schaalbaarheid van de doorvoercapaciteit van de werkbelasting terwijl het aantal gastmachines toeneemt.
•
•
Rapportagewerkbelasting Rapportagequery's die een zwaar beroep doen op de CPUen I/O-bronnen.
•
De prestaties vergelijken bij het maken van rapportagequery's tussen een oorspronkelijke Windowsinstallatie, een hoofdpartitie en een virtuele gastmachine.
Operationele werkbelasting SQL Server
•
De prestaties vergelijken voor databaseacties tussen een oorspronkelijke Windowsinstallatie, een hoofdpartitie en een virtuele gastmachine.
Back-up/terugzetten, index opnieuw maken, DBCC CHECKDB.
Onderstaande lijst bevat meer specifieke informatie over de doelscenario's voor de verschillende typen werkbelasting: •
•
SQLIO-test: SQLIO is een hulpprogramma voor het vaststellen van de I/O-capaciteit van een bepaalde configuratie. Dit testscenario is bedoeld om de I/O-overhead vast te stellen bij gebruik van een virtuele gastmachine met doorgangsschijven voor de opslagconfiguratie. OLTP-werkbelasting. Dit testscenario:
• •
o Vergelijkt de prestaties van SQL Server op een oorspronkelijke Windowsinstallatie met de prestaties van SQL Server op een virtuele gastmachine. Voor deze vergelijking zijn de oorspronkelijke Windows-installatie en de virtuele gastmachine geconfigureerd met dezelfde hardwareconfiguratie. o Vergelijkt de prestaties van SQL Server met gebruik van verschillende opslagconfiguraties voor gegevens- en logbestanden. Vergelijking tussen een configuratie met doorgangsschijven en VHD-configuraties met verschillende onderliggende opslagconfiguraties (zoals een gedeelde opslagconfiguratie tegenover een afzonderlijke opslagconfiguratie). o Vergelijkt de prestaties van meerdere exemplaren van SQL Server op een oorspronkelijke Windows-installatie met een overeenkomend aantal virtuele gastmachines, elk met één exemplaar van SQL Server. o Observeert de schaling van de werkbelasting als er virtuele gastmachines aan de hoofdpartitie van één fysieke server worden toegevoegd. Hiervoor hebben we gevallen geobserveerd waarbij: Het aantal fysieke CPU-kernen gelijk was aan de som van de logische CPU-kernen van alle virtuele gastmachines. Het aantal fysieke CPU-kernen lager was dan de som van alle logische CPU-kernen van alle virtuele gastmachines (worden "te zwaar belaste" CPU-bronnen genoemd). Rapportagewerkbelasting: dit scenario vergelijkt de prestaties van een SQL Server met een oorspronkelijke Windows-installatie met de prestaties van een SQL Server op een virtuele gastmachine met een overeenkomstige hardwareconfiguratie. Databasehandelingen: dit scenario vergelijkt de prestaties van een SQL Server met een oorspronkelijke Windows-installatie met de prestaties van een SQL Server op een virtuele gastmachine met een overeenkomstige hardwareconfiguratie.
Voor de scenario's waarbij de OLTP-werkbelasting is gebruikt, zijn verschillende werkbelastingniveaus toegepast om de gedragsverschillen te observeren bij verschillende CPUniveaus. Details van deze verschillende werkbelastingniveaus worden verderop in dit artikel besproken.
SQL Server controleren in Hyper-V-configuraties U moet rekening houden met verschillende aandachtspunten wanneer u de prestaties controleert van SQL Server-werkbelastingen die in Hyper-V-configuraties worden uitgevoerd met de Windows Systeemmonitor (wordt ook vaak prestatiemeter genoemd). Voor een correcte meting van het bronnenverbruik moet u gebruikmaken van Hyper-V-counters die door Windows in de hoofdpartitie worden vrijgegeven. Een diepgaande discussie over Hyper-V-controle valt buiten het bestek van dit artikel. Zie bijlage 3 voor meer informatie. Tijdens deze tests hebben we verschillende waarnemingen gedaan met betrekking tot de prestaties. De meeste aandachtspunten hebben betrekking op metingen van het CPU-gebruik. Bij het controleren van het CPU-gebruik op een server waarop Hyper-V wordt uitgevoerd, moet u gebruikmaken van de Hyper-V Processor-counters op de hoofdpartitie. Hyper-V bevat drie primaire counters die betrekking hebben op het CPU-gebruik:
• • •
Hyper-V Hypervisor Logical Processor: het meest nauwkeurige overzicht van het totaal aan CPU-bronnen dat door de fysieke server is verbruikt. Hyper-V Hypervisor Root Virtual Processor: het meest nauwkeurige overzicht van de CPU-bronnen die door de hoofdpartitie zijn verbruikt. Hyper-V Hypervisor Virtual Processor: het meest nauwkeurige overzicht van het CPUverbruik voor specifieke virtuele gastmachines.
De klassieke Percentage processortijd-counters kunnen in de hoofdpartitie worden gecontroleerd, maar omdat enkele virtualisatielagen niet zichtbaar zijn voor deze processoritems, levert dit geen goed beeld op van de verbruikte CPU-bronnen. Bij het controleren van de prestaties moet het CPU-gebruik worden gemeten met Hyper-V-counters op een server waarop de Hyper-V-rol wordt uitgevoerd terwijl de hypervisor is ingeschakeld. Meer details vindt u in het blog van Tony Voellm over het controleren van Hyper-V-prestaties. Figuur 1 bevat de verschillende counters. De bovenste counters in deze afbeelding (\\SQLBP08R900) worden in de hoofdpartitie gecontroleerd en de onderste counters (\\sqlhv1) vanuit het perspectief van de gast. Houd rekening met het feit dat dit slechts een voorbeeld is. Er zijn zestien fysieke CPU-kernen zichtbaar op de hoofdpartitie en vier logische CPU-kernen op de virtuele gastmachine. Houd er bovendien rekening mee dat, hoewel er twee virtuele gastmachines op de hoofdpartitie werden uitgevoerd, er wegens ruimtegebrek slechts één zichtbaar is in de afbeelding. De gegevens van de vier logische processorcounters voor de tweede virtuele machine worden rechts van de zichtbare informatie weergegeven.
Figuur 1: Hyper-V-prestatiecounters
Raadpleeg voor meer informatie over het controleren van de prestaties en verwante onderwerpen de virtualisatieparagraaf van de Windows 2008 performance tuning guidelines en de Hyper-V performance counters blogs.
Bij het controleren van SQL Server hoeft u geen rekening te houden met speciale aandachtspunten wanneer SQL Server vanaf een virtuele gastmachine wordt uitgevoerd. SQL Server-counters berekenen het verbruik (SQL Server-specifieke bronnen) of de doorvoer. Bovendien zijn SQL Server-counters niet zichtbaar voor de hoofdpartitie als ze op een virtuele gastmachine worden uitgevoerd; ze moeten vanaf de virtuele gastmachine worden gecontroleerd. Het meten van de I/O-prestaties is afhankelijk van de manier waarop de gastopslag is geconfigureerd. Latentie heeft betrekking op de verstreken tijd en kan zowel vanaf de hoofdpartitie als de gast met redelijke precisie worden gemeten. Hieronder volgen enkele aandachtspunten bij het controleren van de schijfprestaties: •
•
•
U kunt op de virtuele gastmachine gebruikmaken van logische of fysieke schijfcounters voor het controleren van de I/O-prestaties. Wij hebben weinig verschillen waargenomen in de gerapporteerde waarden door de counters op de hoofdpartitie en de virtuele gastmachine. Er was echter wel sprake van iets hogere latentiewaarden (gem. schijf/sec, lezen en schrijven) bij het controleren van de prestaties op de virtuele gastmachine dan op de hoofdpartitie. Dat komt doordat het voltooien van de I/O vanuit het perspectief van de virtuele machine iets langer duurt. Als de opslag voor de virtuele gastmachine als doorgang is geconfigureerd, is de schijf op hoofdpartitieniveau offline en wordt deze niet weergegeven onder de logische schijfcounters van de hoofdpartitie. Voor het controleren van de prestaties van doorgangsschijven op de hoofdpartitie moeten fysieke schijfcounters worden gebruikt. Op het moment dat de tests werden uitgevoerd, was er sprake van bekende problemen in de fysieke schijfcounters van Windows Server 2008 bij het gebruik van oplossingen met meerdere paden. Deze problemen zijn in de nieuwste GDR van System Center Virtual Machine Manager opgelost. Als virtuele gastmachines zijn geconfigureerd voor het gebruik van VHD-bestanden voor de opslag en de VHD-bestanden op algemene fysieke schijven staan, verschaft het controleren van de schijfcounters vanaf de virtuele gastmachine details over de I/O voor het specifieke VHD-bestand. Het controleren van het volume met alle VHD-bestanden op de hoofdpartitie, levert cumulatieve waarden op voor alle I/O's voor de schijf of het volume.
Tabel 2 bevat de typen counters die gedurende de werkbelastingruns voor de OLTPwerkbelasting van onze tests zijn verzameld. De tabel laat de gerapporteerde verschillen in de prestatiecounters zien bij het controleren van de prestaties vanaf de virtuele gastmachine vergeleken met de hoofdpartitie.
Tabel 2: counters en werkbelastingen Counters gemeten vanaf
Virtuele gastmachine
Hoofdpartitie
Lage OLTPwerkbelasting
Gemiddelde OLTPwerkbelasting
Hoge OLTPwerkbelasting
Transacties/sec
352
546
658
Batches/sec
565
897
1075
% processortijd
34,2
65,3
84,2
% bevoegdheidtijd
5,1
8
8,4
Logisch - Gem. schijf sec/lezen (_Totaal)
0,005
0,006
0,007
Logisch - Schijf lezen/sec (_Totaal)
1053
1597
1880
% processortijd
4,9
7,8
11,2
% bevoegdheidtijd Logische processor Hyper-V, % uitvoeringstijd hypervisor Logische processor Hyper-V, % totale uitvoeringstijd Logische processor Hyper-V, % uitvoeringstijd virtuele gastmachine
3,6
6,1
7,3
4
4,8
4,3
39,1
68,7
86,5
35,1
63,9
82,1
Fysiek - Gem. schijf sec/lezen (_Totaal)
0,005
0,006
0,006
Fysiek - Schijf lezen/sec (_Totaal)
1053
1597
1880
Batches per CPU % (batches/sec / % uitvoeringstijd virtuele gastmachine)
16,1
14
13,1
Counter
Opmerking: de Hyper-V-items die in de hoofdpartitie zijn geteld, zijn de totalen van alle virtuele gastmachines die momenteel worden gebruikt.
Testresultaten, observaties en aanbevelingen In deze paragraaf zetten we de testresultaten uiteen en analyseren we de testresultaten, en geven we aanbevelingen en observaties met betrekking tot het gebruik van SQL Server in een omgeving met virtuele machines. Deze paragraaf is opgebouwd uit twee delen. In het eerste gedeelte wordt de overhead van de basisbronnen besproken die het gevolg is van het gebruik van SQL Server in a Hyper-V-omgeving. In het tweede gedeelte bespreken we de gevolgen van het consolideren van SQL Server als virtuele exemplaren.
Prestatieoverhead door het gebruik van SQL Server in Hyper-V Met de eerste reeks testscenario's wilden we de prestatieoverhead meten die het gevolg was van het uitvoeren van SQL Server in een “opgeschoonde” Hyper-V-omgeving. De Baseline-tests zijn op drie manieren uitgevoerd: in een oorspronkelijke Windows-omgeving met Hyper-V uitgeschakeld, op de hoofdpartitie met Hyper-V ingeschakeld en op één virtuele gastmachine. De hardwareconfiguratie was voor alle tests identiek.
Opmerking: oorspronkelijk exemplaar verwijst naar een exemplaar van SQL Server dat in een oorspronkelijke Windows-omgeving wordt uitgevoerd en Virtueel exemplaar verwijst naar een exemplaar van SQL Server op een virtuele gastmachine. In deze paragraaf worden de volgende testscenario's besproken: • • • •
Het bepalen van I/O-overhead van doorgangsschijven met SQLIO De OLTP-werkbelastingprestaties van één oorspronkelijk exemplaar en een virtueel exemplaar vergelijken De prestaties met betrekking tot rapportagequery's van een oorspronkelijk exemplaar en een virtueel exemplaar vergelijken De impact van virtualisatie op algemene databasehandelingen observeren: o Gecomprimeerde back-up en gegevens terugzetten o Het opnieuw maken van de index o DBCC CHECKDB
I/O-overhead bij gebruik van doorgangsschijven - SQLIO I/O-overhead vormde vroeger altijd een probleem in omgevingen met virtuele machines. Hierdoor kon alles worden platgelegd bij I/O-intensieve toepassingen zoals SQL Server. Met Hyper-V is de technologie echter anders. Voor het beste resultaat keken we bij ons eerste testscenario met de meest geoptimaliseerde I/O-configuratie naar de I/O-overhead bij gebruik van speciale doorgangsschijven. We hebben voor een configuratie met doorgangsschijven gekozen, omdat deze oplossing het kortste codepad oplevert van de host naar het I/Osubsysteem. In de tests hebben we evenveel fysieke aandrijfassen aan de hoofdpartitie als de virtuele gastmachine toegewezen. Dankzij herhaalde tests met verschillende willekeurige en opeenvolgende I/O's zijn we erachter gekomen dat de I/O-overhead van Hyper-V met doorgangsschijven nihil tot minimaal is. Raadpleeg voor meer informatie, inclusief een diepgaande prestatieanalyse van doorgangsschijven en de virtuele vaste schijf, het artikel van Tony Voellm en Liang Yang, “Windows Server 2008 Hyper-V Virtual Hard Disk and PassThrough Disk Performance”, dat binnenkort verschijnt. Nog meer informatie over analyses met betrekking tot Hyper-V-opslagprestaties vindt u hier (http://blogs.msdn.com/tvoellm/archive/2008/09/24/what-hyper-v-storage-is-best-for-you-show-methe-numbers.aspx). Opslagconfiguratie
De configuratie met doorgangsschijven was voor de hoofdpartitie en de virtuele machine identiek. Beide configuraties waren voorzien van logische-eenheidnummers (LUN's) uit de opslagmatrix met hetzelfde aantal fysieke schijfbronnen. Er was geen sprake van deling op schijfniveau tussen de LUN's; met andere woorden, de aandrijfassen werden niet door de LUN's gedeeld. Figuur 2 bevat de verschillende configuraties.
Figuur 2: opslagconfiguratie met doorgang
De prestaties van een configuratie met doorgangsschijven
Op alle virtuele gastmachines en de hoofdpartitie werden dezelfde SQLIO-tests uitgevoerd. In figuur 3 en figuur 4 ziet u de testresultaten van willekeurige en opeenvolgende I/O-tests met SQLIO. We hebben voor dit testscenario twee veelvoorkomende SQL IO-grootten gebruikt (8K en 64K).
Figuur 3: doorgang 8K, willekeurige I/O
Figuur 4: doorgang 64K, opeenvolgende I/O
Prestatieoverhead virtuele machine: OLTP-werkbelasting Het doel van dit testscenario was de impact vaststellen van het uitvoeren van SQL Server 2008 op een virtuele machine met een OLTP-werkbelasting, waarbij een makelaarstoepassing werd gesimuleerd. Raadpleeg voor informatie over de gebruikte hardwareconfiguratie bijlage 3. Er zijn drie werkbelastingniveaus toegepast op de baseline, de hoofdpartitie en de virtuele gastmachine. Op de baseline wordt het exemplaar van SQL Server op de oorspronkelijke server uitgevoerd, waarbij Hyper-V is uitgeschakeld. Hiervoor hebben we de instelling "hypervisorlaunchtype" op "uit" gezet (dat wil zeggen bcdedit /set hypervisorlaunchtype off). Hiervoor moest Windows opnieuw worden opgestart. De belastingniveaus voor het testscenario werden door het percentage CPU-gebruik gedefinieerd. Omdat 100% CPU-gebruik geen normaal scenario is in een productieomgeving, hebben we voor de CPU belastingniveaus van 20% tot 80% gebruikt. De CPU-gebruiksdoelen voor de verschillende werkbelastingniveaus vindt u in tabel 3. Tabel 3: CPU-gebruiksdoelen Testwerkbelasting OLTP – laag OLTP – gemiddeld OLTP – hoog
CPU-doel ongeveer 30% 50%-60% 80%
Omdat de Hyper-V van de virtuele gastmachines ondersteuning biedt voor vier logische processors, is de host voor een rechtstreekse vergelijking via de BIOS-instelling geconfigureerd voor het gebruik van vier kernen (NUMPROC=4). Om de impact van de opslagconfiguratie te kunnen begrijpen, zijn er twee virtuele machines geconfigureerd met twee typen Hyper-Vopslagconfiguraties die voor de SQL Server-werkbelasting zijn aanbevolen (doorgangsschijven en vaste VHD). Impact op doorvoer en processor
De Baseline-tests met drie laadniveaus werden in een oorspronkelijke Windows Server 2008omgeving uitgevoerd, waarbij de Hyper-V-rol werd uitgeschakeld. Dezelfde typen werkbelasting werden op de hoofdpartitie uitgevoerd met Hyper-V ingeschakeld, op een virtuele gastmachine met opslag op doorgangsschijven en op een virtuele gastmachine met vaste VHD-opslag. Tabel 4 bevat de relatieve batchverzoeken per CPU in procenten en de overhead voor alle testcases. Het schalen van het systeem ging bij alle testcases in dit scenario prima; iedere configuratie behaalde dezelfde doorvoer, waarbij de virtuele machine wel hogere CPUkosten genereerde voor hetzelfde resultaat. De prestaties van de doorgangsschijven en vaste VHD's weken voor de overhead nog geen procentpunt van elkaar af. Tabel 4 bevat daarnaast ook de CPU-overhead die wordt veroorzaakt door het uitvoeren van de OLTP-werkbelasting in de virtuele machine. In de tabel is te zien dat de overhead procentueel hoger was bij een lagere werkbelasting. Er is sprake van een bepaalde hoeveelheid vast werk en CPU-gebruik dat met de virtuele machine in verband kan worden gebracht. Als dat over een kleinere hoeveelheid werk moet worden verdeeld, wordt de overhead procentueel hoger. We hebben de volgende formule gebruikt om de prestaties te berekenen: Batch/CPU% = batchverzoeken/sec gedeeld door het percentage CPU-gebruik
Tabel 4: CPU-overhead virtuele machine waarop OLTP-werkbelasting wordt uitgevoerd Laag Batchver z/s
Baseline1 2
Hoofd
3
VM_PT
4
VM_VHD
Batch/ CPU%
Gemiddeld Overhead
Hoog
Batchv erz./s
Batch/ CPU%
Overhead
Batchver z./s
Batch/ CPU%
Overhead
5
566
19,2
0,00%
908
16
0,00%
1069
14,8
0,00%
566
17,5
8,85%
907
14,8
7,50%
1113
13,5
8,78%
565
16,1
16,15%
897
14
12,50%
1075
13,1
11,49%
563
15,7
18,23%
876
13,9
13,13%
1029
13,2
10,81%
1. 2. 3. 4. 5.
Baseline: een oorspronkelijke Windows Server 2008-omgeving waarbij de Hyper-V-rol is uitgeschakeld. De schakelaar van het virtuele netwerk is niet uitgeschakeld. Hoofdpartitie: een hoofdpartitie in Windows Server 2008 waarbij Hyper-V is ingeschakeld. VM_PT: een virtuele gastmachine geconfigureerd met doorgangsschijven, vier logische processors en 14 GB RAM. VM_VHD: een virtuele gastmachine geconfigureerd met vaste VHD-schijven, vier logische processors en 14 GB RAM. De overhead wordt berekend aan de hand van de Baseline ((Baseline Batches/CPU – VM-batches/CPU) / Baseline-batches/CPU)
Figuur 5: relatieve doorvoer: batchverzoeken per CPU%
Opslagconfiguratie en prestaties
Op beide virtuele gastmachines is dezelfde onderliggende schijfconfiguratie gebruikt voor de SQL Server-gegevens en de logbestanden. Deze kunnen dus direct worden vergeleken (de details van de fysieke configuratie van beide machines vindt u eerder in dit document en deze zijn identiek aan de configuratie voor de SQLIO-tests). Bij de tests met VHD-bestanden waren dit de enige bestanden die op de fysieke schijven werden geplaatst en die voor de hoofdpartitie beschikbaar waren. We hebben een kleine toename in de latentie geconstateerd bij het gebruik van VHD's voor de opslag van de SQL Server-gegevens en het logbestand. Dit leidde tot een kleine impact op de werkbelastingdoorvoer, zoals zichtbaar is in figuur 5.
Het gebruik van VHD voor configuraties met een virtuele gastmachine biedt voordelen op het gebied van inrichten en het beheer. Vanuit het perspectief doorvoer/prestaties en als de werkbelasting niet te hoog is, is er geen merkbaar verschil tussen het gebruik van doorgangsschijven en vaste VHD. Als de werkbelasting toeneemt, heeft het gebruik van een doorgangsschijf enige voordelen voor de prestaties. Figuur 6 toont de leesprestaties die in dit OLTP-testscenario zijn vastgelegd.
Figuur 6: gegevensvolumes (leesbewerkingen per seconde)
Figuur 7 toont de gemiddelde schijflatentie voor alle testruns. Zoals verwacht laat VHD de meeste latentie zien, terwijl de latentie van de doorgangsschijf gelijk is aan de latentie van de oorspronkelijke opslag. De schijflatentiewaarden die voor de VHD-case zijn gerapporteerd, zijn afkomstig van de counters van de virtuele gastmachine. We zagen echter geen verschillen tussen deze waarden en de waarden die door de hoofdpartitie werden gerapporteerd.
Figuur 7: gemiddelde schijflatentie
Prestaties bij rapportagequery's vergelijken
Rapportagequery's zijn normaal gesproken langdurige, alleen-lezen query's die zeer CPUintensief zijn en een zwaar beroep doen op de I/O-bronnen. In vergelijking met een OLTPwerkbelasting worden query's van dit type doorgaans alleen gemaakt als er weinig gebruikers tegelijkertijd werken. In dit testscenario zijn vier rapportagequery's achtereenvolgens uitgevoerd om het verbruik van de I/O-bronnen en de benodigde tijd te berekenen. Deze vier query's zijn I/O-intensief en vragen vanwege de aggregaties veel van de CPU. De instelling sp_configure ‘max degree of parallelism’ is op 0 gezet, zodat de query's alle beschikbare CPU-bronnen kunnen gebruiken. Het verschil tussen het uitvoeren van de query's op virtuele gastmachines en op de oorspronkelijke hoofdpartitie was minimaal. We hebben een relatief kleine toename in de prestatieoverhead geconstateerd op de virtuele gastmachines. Figuur 8 toont de benodigde tijd en het CPU-verbruik van de query's.
Figuur 8: prestaties bij rapportagequery's
Databasehandelingen Sommige veelgebruikte databasehandelingen zijn relatief CPU-intensief. De testresultaten in deze paragraaf hebben betrekking op de virtualisatie-impact op databasehandelingen, zoals het maken van back-ups met compressie en het terugzetten van de gegevens, het opnieuw maken van de index en DBCC CHECKDB. Back-ups maken en gegevens terugzetten
Voor het maken van de back-up en het terugzetten van de gegevens is een bestandsshare op een andere fysieke server als doel voor de back-upbestanden gebruikt. Daardoor werd het maken van de back-up en het terugzetten van de gegevens beperkt door de bandbreedte van het netwerk en niet door de schijf of de processor. We hebben SQL Server 2008 met oorspronkelijke backupcompressie voor de back-uptest gebruikt. In vergelijking met dezelfde handeling op een oorspronkelijk besturingssysteem was er sprake van een prestatiedaling van 10-15% bij de doorvoer van de back-up en een aanzienlijke toename van het CPU-gebruik. Bij het terugzetten van de gegevens was een vergelijkbare daling zichtbaar. Deze daling in de doorvoer kan worden verklaard door de netwerkoverhead die optreedt wanneer de virtuele gastmachine de netwerkbronnen zwaar belast. De overhead die werd veroorzaakt door het uitvoeren van SQL Server op een virtuele gastmachine met Hyper-V was dan ook het grootste probleem. Deze overhead was aanzienlijk groter dan de overhead die we voor I/O- of CPU-handelingen constateerden.
In dit testscenario hebben we geconstateerd dat de netwerkdoorvoer tijdens het maken van de back-up en het terugzetten van de gegevens binnen het bereik 50-60 MB per seconde bleef. Er is gebruikgemaakt van één 1Gbs/sec-netwerkadapter voor zowel de server die voor SQL Server is gebruikt als de server voor de bestandsshare voor de bestemming van de back-up. De doorvoer bij het maken van de back-up en het terugzetten van de gegevens bedroeg circa 100 MB per seconde. De metingen zijn afkomstig van de uitvoer van SQL Server Backup and Restore. Tijdens deze procedure is gebruikgemaakt van compressie en dat verklaart waarom de gerapporteerde doorvoer aanzienlijk hoger is dan de netwerkdoorvoer die door de netwerkconfiguratie wordt ondersteund. De figuren 9, 10 en 11 tonen de doorvoer van de back-up- en terugzetgegevens van de oorspronkelijke hoofdpartitie en de virtuele machines, met doorgangsschijven en een vaste VHD. De relatieve doorvoer op de Y-as is als volgt berekend: het totaal aantal megabytes per seconde gedeeld door het totaal gemiddelde CPU-percentage. De iets hogere doorvoer bij het terugzetten kan worden verklaard door de schrijfprestaties van de doelbestandsshare (de leesprestaties van die share zijn iets beter omdat gebruik wordt gemaakt van RAID5).
Figuur 9: vergelijking van de doorvoer bij het maken van een back-up en het terugzetten van gegevens
Figuur 10: netwerk- en CPU-gebruik bij het maken van een back-up
Figuur 11: netwerk- en CPU-gebruik bij het terugzetten van gegevens
Tabel 5 bevat de gegevens uit dit testscenario.
Tabel 5: doorvoer bij het maken van een back-up en het terugzetten van gegevens
Baseline
Hoofdpartitie
Virtuele gastmachine (doorgang)
Virtuele gastmachine (vaste VHD)
Back-updoorvoer (MB/s) Totale back-uptijd (seconden) Hersteldoorvoer (MB/s)
181,00 764,00 241,00
158,00 875,00 218,00
154,00 874,00 173,00
157,00 874,00 167,00
Totale hersteltijd (seconden)
573
634
799
824
De index opnieuw maken
Het opnieuw maken van de index is een veelgebruikte databasehandeling en is zowel CPU- als I/O-intensief. Het doel van deze testcase was de impact weergeven van virtualisatie bij het opnieuw maken van de index. Er zijn achter elkaar drie grote indexen gemaakt en daarbij was PAGE-compressie ingeschakeld (dit is een nieuwe functie in SQL Server 2008 waarmee de gegevenspagina's in een index worden gecomprimeerd). We hebben de index met PAGEcompressie gemaakt om de prestaties van de CPU te verbeteren. Het gebruik van de bronnen en de benodigde tijd zijn vastgelegd. Er is zeer weinig overhead geconstateerd bij het uitvoeren dezelfde handeling op de virtuele machines. Figuur 12 bevat de benodigde tijd voor het maken van de index ten opzichte van het CPU-percentage op het oorspronkelijke besturingssysteem, de hoofdpartitie en de virtuele gastmachines.
Figuur 12: drie indexen die opeenvolgend met PAGE-compressie zijn gemaakt
DBCC CHECKDB
We hebben DBCC CHECKDB ook getest, wederom een CPU- en I/O-intensieve procedure. Deze handeling duurt langer op een virtuele gastmachine dan op het oorspronkelijke besturingssysteem. Figuur 13 bevat de benodigde voltooiingstijd ten opzichte van het totaal aantal CPU-bronnen dat door de handeling wordt verbruikt. Net als bij de indextests constateerden wij relatief weinig toename in tijd voor de voltooiing.
Figuur 13: DBCC CHECKDB met MAXDOP 0
SQL Server-consolidatiescenario's met Hyper-V Deze testscenario's zijn bedoeld om een aantal belangrijke zaken te weten te komen over het consolideren van SQL Server in een Hyper-V-omgeving: •
De gevolgen voor de prestaties van een opslagconfiguratie met meerdere exemplaren Het doel van dit testscenario was de gevolgen bestuderen voor de prestaties op specifieke en gedeelde opslag in een geconsolideerde omgeving.
•
Schaalbaarheid virtueel exemplaar Het doel van dit testscenario was de schaalbaarheid van het virtuele exemplaar te bestuderen, waarbij voldoende fysieke processorkracht aanwezig was voor ondersteuning
van een-op-een-toewijzing met een logische processor die voor de virtuele gastmachine is geconfigureerd. •
Prestaties virtueel exemplaar met te zwaar belaste CPU-bronnen Het doel van dit testscenario was het bestuderen van de gevolgen voor de prestaties wanneer het totaalaantal logische processors dat voor de virtuele exemplaren was geconfigureerd groter was dan het totaalaantal voor de fysieke processors op de server.
Opslagconfiguraties in de consolidatieomgeving vergelijken We hebben eerder vastgesteld dat doorgangsschijven en vaste VHD goede opslagconfiguraties zijn voor de SQL Server-werkbelasting. Om de gevolgen van deze twee opslagconfiguraties te begrijpen voor een OLTP-werkbelasting, hebben we twee sets tests uitgevoerd om de volgende opslagmethoden te vergelijken: • •
Specifieke opslag (zonder deling op schijfniveau) met doorgangsschijven Een groep schijven met VHD-bestanden voor de SQL Server-gegevens en logbestanden
Bij de eerste opslagconfiguratie werd gebruikgemaakt van doorgangsschijven met specifieke opslag voor elke virtuele machine, zoals weergegeven in figuur 14. Iedere virtuele gastmachine was voorzien van deze configuratie, bestaande uit twee LUN's (150 GB) voor gegevensbestanden en één LUN (50 GB) voor het logbestand. Er was geen sprake van schaling op fysiek schijfniveau tussen de virtuele gastmachines en iedere LUN had een eigen set fysieke schijven.
Figuur 14: schijfconfiguratie per virtuele machine/hoofdpartitie
De tweede opslagconfiguratie bestond uit een groep schijven, zoals weergegeven in figuur 15. In dit geval is één groep schijven gebruikt voor de VHD-bestanden met de SQL Servergegevensbestanden en een aparte groep voor de VHD-bestanden met de SQL Serverlogbestanden. Voor gevirtualiseerde opslagomgevingen biedt deze configuratie een flexibelere oplossing.
Figuur 15: enkelvoudige groepen
Vervolgens is hetzelfde type OLTP-werkbelasting met andere uitvoerniveaus voor beide configuraties opnieuw uitgevoerd. Figuur 16 en figuur 17 tonen de verschillen in de I/Odoorvoer en de latentie tussen de afzonderlijke opslagconfiguratie met doorgangsschijven en de gedeelde opslagconfiguratie met VHD-bestanden.
Figuur 16: I/O-doorvoer en latentie met doorgangsschijven vergeleken met vaste VHD
Figuur 17: doorvoer van afzonderlijke doorgangs-LUN's vergeleken met vaste VHD op gedeelde schijven
De prestaties waren voor beide opslagconfiguraties identiek. Gemiddeld genomen was de configuratie met een vaste VHD ongeveer 3,5% langzamer dan de configuratie met doorgangsschijven. Als de I/O-prestaties en de voorspelbaarheid belangrijk zijn voor uw toepassing, raden wij het gebruik van doorgangsschijven met specifieke schijfbronnen aan. Er is slechts sprake van een klein compromis in de flexibiliteit ten opzichte van het gebruik van VHDbestanden. Schaalbaarheid virtueel exemplaar Het gebruik van meerdere virtuele machines op dezelfde host is het meest voor de hand liggende implementatiescenario. We hebben dit testscenario uitgevoerd om de kenmerken te bestuderen van de schaling van de databasewerkbelasting met virtuele machines. De Dell R900 die we voor dit testscenario hebben gebruikt, bevat zestien fysieke kernen. Er zijn twee sets testcases uitgevoerd. De eerste set was geconfigureerd voor het gebruik van acht kernen (NUMPROC=8). De tweede set was geconfigureerd voor het gebruik van zestien kernen (NUMPROC=16). Alle virtuele gastmachines waren geconfigureerd met vier logische processors en 14 GB RAM. SQL Server was geconfigureerd voor 12 GB, zodat er 2 GB beschikbaar was voor het besturingssysteem. Twee virtuele gastmachines die gelijktijdig werden uitgevoerd
Deze testcase betrof twee virtuele gastmachines die gelijktijdig werden uitgevoerd op een host die met acht fysieke processors was geconfigureerd. Iedere virtuele machine was geconfigureerd met vier logische processors. De virtuele machines waren geconfigureerd met identieke onderliggende opslag.
De resultaten in figuur 18 geven aan dat de configuratie zeer goed schaalt als de werkbelasting toeneemt.
Figuur 18: schaalbaarheid van virtuele gastmachines die gelijktijdig werden uitgevoerd
Vier virtuele gastmachines die gelijktijdig werden uitgevoerd
We hebben deze test uitgevoerd om de schaalbaarheid van virtuele machines met OLTPwerkbelasting te bestuderen als er voldoende processorbronnen beschikbaar zijn voor een-opeen-toewijzing van fysieke processors naar logische processors. De host had zestien beschikbare CPU's en iedere virtuele machine was geconfigureerd met vier logische processors. De onderliggende opslag was voor alle vier de virtuele machines identiek. De resultaten in figuur 19 tonen aan dat de virtuele machines zeer goed schalen als de CPU niet te zwaar belast is. Er kan sprake zijn van meer overhead met vier virtuele gastmachines die gelijktijdig worden uitgevoerd dan bij twee virtuele gastmachines die gelijktijdig worden uitgevoerd. Dat is met het oog op het toegenomen aantal gastmachines normaal.
Figuur 19: schaalbaarheid van virtuele machines zonder dat de CPU's te zwaar belast zijn
Prestaties virtueel exemplaar met te zwaar belaste CPU-bronnen Hyper-V biedt ondersteuning voor te zwaar belaste CPU's tot 1:8 logische-tot-virtuele processortoewijzing. Te zwaar belaste processors kunnen in consolidaties worden gebruikt om de beschikbare CPU-bronnen op de fysieke server te maximaliseren. Deze techniek zorgt echter wel voor aanzienlijk meer CPU-overhead. Met de tests die in deze paragraaf worden besproken, werd de impact onderzocht van het uitvoeren van SQL Server in een virtuele omgeving met te zwaar belaste CPUbronnen. Vier virtuele gastmachines die gelijktijdig werden uitgevoerd met te zwaar belaste CPU-bronnen
Voor het scenario met een te zwaar belaste processor zijn vier virtuele gastmachines geconfigureerd die gelijktijdig werden uitgevoerd. Iedere virtuele machine was voorzien van vier logische processors en 14 GB RAM, waarvan 12 GB door SQL Server werd gebruikt. De onderliggende opslag was voor alle vier de virtuele machines identiek. Figuur 20 toont de schaalbaarheid terwijl de werkbelasting toeneemt. Bij een toenemende werkbelasting is de schaal nogal vlak en komt uit op circa 90%. Het gebruik van vier virtuele machines met ieder vier virtuele processors resulteerde in een te zwaar belaste CPU: zestien virtuele processors met slechts acht fysieke CPU-kernen. Hyper-V maakt beheeropties voor CPU-bronnen mogelijk op het niveau van de virtuele machines die voor deze typen scenario's kunnen worden gebruikt. Deze opties worden in een toekomstig artikel besproken.
Figuur 20: schaalbaarheid van vier virtuele gastmachines die gelijktijdig werden uitgevoerd met een te zwaar belaste CPU
Consolidatieopties vergelijken Virtualisatie levert vele voordelen op voor consolidatiescenario's. Een van de belangrijkste voordelen is dat virtuele machines meerdere afzonderlijke omgevingen op dezelfde hostcomputer creëren. De prestaties zijn afhankelijk van de toepassing, de werkbelasting en de hardware. Het is belangrijk de voor- en nadelen van een oorspronkelijk exemplaar vergeleken met een virtueel exemplaar voor ieder project uitgebreid te testen. In tabel 6 worden de opties voor oorspronkelijke exemplaren en virtuele exemplaren met betrekking tot consolidatie vergeleken. Tabel 6: consolidatieopties
Afzondering
Meerdere exemplaren van SQL Server Gedeeld Windows-exemplaar
Meerdere virtuele machines Specifiek Windows-exemplaar
CPU-bronnen
Aantal CPU's zichtbaar voor het exemplaar van Windows
Maximum • Windows 2008: tot vier virtuele CPU's • Windows 2003: tot twee virtuele CPU's
Geheugen
Serverlimiet flexibel (max. servergeheugen)
Opslag
SQL Servergegevensbestanden met standaard opslagopties
Statisch toegewezen aan de virtuele machine • Alleen offline wijzigingen • Geheugenbronnen kunnen niet worden overbelast Limiet 64 GB per virtuele machine 2 terabyte (TB) limiet per host SQL Server-gegevensbestanden met doorgangs- of virtuele vaste schijven, beschikbaar voor de virtuele machine
Bronbeheer
WSRM (verwerkingsniveau)
Virtuele gastmachine met Hyper-V
Aantal exemplaren Ondersteuning
50
Praktische limiet bepaald door fysieke bronnen
Normale regels van toepassing
SQL Server 2008 en SQL Server 2005
Hoge beschikbaarheid
Normale regels van toepassing
Gastclustering niet ondersteund Databasespiegeling, logboekbestanden (ondersteund)
Conclusie Met het oog op prestaties is Hyper-V een haalbare optie voor consolidatiescenario's in SQL Server. De algemene prestaties van SQL Server met Hyper-V in een virtuele omgeving zijn redelijk in vergelijking met een soortgelijke, oorspronkelijke Windows Server 2008omgeving. Met een juiste I/O-capaciteit en -configuratie is de I/O-overhead minimaal. Voor de beste prestaties moet u over voldoende fysieke processors beschikken om het geconfigureerde aantal virtuele processors op de server te ondersteunen om overbelasting van CPU-bronnen te voorkomen. De CPU-overhead neemt aanzienlijk toe als de CPU-bronnen te zwaar belast zijn. Het is belangrijk dat u iedere toepassing uitgebreid test voordat u deze in een Hyper-Vomgeving in productie neemt. Hieronder volgen enkele algemene aandachtspunten en aanbevelingen voor het gebruik van SQL Server in Hyper-V-omgevingen.
Observaties •
•
Virtuele gastmachines met Hyper-V zijn beperkt tot een maximum van vier CPUkernen. Daarom kunt u SQL Server in een virtuele gastmachine met Hyper-V alleen toepassen als voor de vereiste werkbelasting vier CPU's voldoende zijn. In vergelijking met oorspronkelijke configuraties met vergelijkbare hardwarebronnen, kan in een virtuele gastmachine dezelfde doorvoer worden verwezenlijkt met slechts een kleine toename van het CPU-gebruik. Met Hyper-V is het mogelijk de CPUbronnen te zwaar te belasten als het totaal aantal logische CPU-kernen dat voor alle virtuele gastmachines is geconfigureerd hoger is dan het werkelijke aantal fysieke CPU-kernen dat op de server beschikbaar is. In die gevallen zagen we een hogere CPU- en prestaties-overhead bij het uitvoeren van SQL Server-werkbelastingen. Keuze van de juiste hardware is essentieel voor goede SQL Server-prestaties. U moet ervoor zorgen dat de cumulatieve fysieke CPU-bronnen op een server toereikend zijn voor de virtuele gastmachines, door de werkbelasting in de geplande gevirtualiseerde omgeving te testen.
• •
•
•
Een netwerkintensieve werkbelasting leidt tot een hogere CPU-overhead en dat heeft weer gevolgen voor de prestaties. De informatie die u tot dusver hebt verzameld, is belangrijk voor de aandachtspunten wat betreft prestaties; houd vóór de implementatie rekening met functionele aandachtspunten (ondersteunde configuraties, opties voor een hoge beschikbaarheid enzovoort). In de bijlagen bij dit artikel vindt u meer informatie, bijvoorbeeld over de Hyper-V-functionaliteit en het actuele ondersteuningsbeleid met betrekking tot het gebruik van SQL Server in Hyper-V-configuraties. Er was sprake van minimale overhead in de I/O-prestaties bij gebruik van SQL Server op een virtuele gastmachine. Een configuratie met doorgangsschijven resulteerde in de beste I/O-prestaties. Er was echter sprake van minimale overhead bij het gebruik van VHD's met een vaste grootte. Welke opslagconfiguratie u moet gebruiken, moet u baseren op wat er voor de onderliggende implementatie belangrijk is; virtuele machines met VHD's kunnen bijvoorbeeld eenvoudiger worden verplaatst dan een systeem met doorgangsschijven. Voor consolidatiescenario's is de hoeveelheid beschikbare opslagbronnen en het scenario bepalend voor de beslissing die u neemt. Bij onze tests behaalden we acceptabele prestaties bij zowel gedeelde als specifieke configuraties. In beide gevallen moet u de opslag op de werkbelasting afstemmen en rekening houden met de vereisten voor responstijden. Houd u altijd aan de best practices met betrekking tot de onderliggende opslag in Hyper-V-omgevingen, zoals u dat bij iedere implementatie van SQL Server zou doen. Raadpleeg voor meer informatie Predeployment I/O Best Practices for SQL Server.
Aanbevelingen •
•
• •
Gebruik doorgangsschijven of vaste VHD's voor de opslag op de virtuele gastmachine. Dit zijn de beste opties met het oog op de prestaties en deze geven de beste resultaten voor iedere SQL Server-werkbelasting. Dynamische VHD's worden om prestatieredenen niet aanbevolen. Vermijd het gebruik van geëmuleerde apparaten en verzeker u ervan dat de integratiecomponenten voor Hyper-V zijn geïnstalleerd en dat er synthetische apparaten worden gebruikt voor de I/O, het netwerk enzovoort. Synthetische apparaten leveren de beste prestaties bij de laagste CPU-overhead. De mogelijkheid om een of meer van deze technieken te gebruiken, hangt af van de hardwarevoorzieningen. Als een werkbelasting de netwerkbronnen zwaar belast, raadpleeg dan de paragrafen over virtualisatie en netwerken van de Windows-handleiding Prestaties afstemmen voor de best practices voor het optimaliseren van het netwerk voor uw configuratie. Test de prestaties met uw werkbelasting, omdat de werkbelastingkenmerken enorm kunnen variëren.
Meer informatie • • • • • • • • • •
Windows Server Hyper-V Hyper-V Deployment and Planning Guide Microsoft Assessment and Planning Toolkit 3.1 for Hyper-V Step by Step Guide to Getting Started with Hyper-V Performance Tuning Guidelines for Windows Server 2008 (Virtualization Section) Hyper-V Performance FAQ Hyper-V Monitoring (Windows Team - All Topics Performance BLOG) Support Policy for Running SQL Server within Hyper-V Environments Predeployment I/O Best Practices for SQL Server Microsoft System Center Virtual Machine Manager
Bijlage 1: De Hyper-V-architectuur Hyper-V is een op hypervisor gebaseerde virtualisatietechnologie voor Windows Server 2008. De hypervisor is het processor-specifieke virtualisatieplatform waarmee meerdere afzonderlijke besturingssystemen één hardwareplatform kunnen delen. Hyper-V biedt ondersteuning voor afzondering op basis van partities. Een partitie is een logische afzonderlijke eenheid, ondersteund door de hypervisor, waarop een besturingssysteem kan worden uitgevoerd. Voor de Microsoft-hypervisor is minimaal één hoofdpartitie vereist waarop Windows Server 2008 64-bit Edition wordt uitgevoerd. De virtualisatiestack wordt in de hoofdpartitie uitgevoerd en heeft rechtstreeks toegang tot de hardware. Vervolgens maakt de hoofdpartitie de onderliggende partities waarop de gastbesturingssystemen worden gehost. Een hoofdpartitie gebruikt de hypercall-API om onderliggende partities te maken. Partities hebben geen toegang tot de fysieke processor en kunnen geen processorinterrupts verwerken. In plaats daarvan werken ze met een virtuele weergave van de processor en worden ze in een gedeelte van het virtuele geheugenadres uitgevoerd dat voor iedere partitie besloten is. De hypervisor verwerkt de interrupts naar de processor en stuurt die naar de bijbehorende partitie door. Hyper-V kan ook de omzetting tussen verschillende virtuele adressen versnellen door een IOMMU (Input Output Memory Management Unit) te gebruiken die onafhankelijk werkt van de hardware voor het geheugenbeheer dat door de CPU wordt beheerd. Een IOMMU wordt gebruikt om fysieke geheugenadressen opnieuw toe te wijzen aan de adressen die door de onderliggende partities worden gebruikt. Onderliggende partities hebben geen directe toegang tot andere hardwarebronnen en werken met een virtuele weergave van de bronnen in de vorm van virtuele apparaten (VDevs). Verzoeken aan de virtuele apparaten worden via de VMBus of de hypervisor aan de apparaten in de hoofdpartitie doorgestuurd en daar verder verwerkt. De VMBus is een logisch communicatiekanaal tussen de partities. De hoofdpartitie bevat VSP's (Virtualization Service Providers) die over de VMBus communiceren om toegangsverzoeken van onderliggende partities te verwerken. Onderliggende partities bevatten VSC's (Virtualization Service Consumers) die via de VMBus de apparaatverzoeken naar VSP's in de hoofdpartitie doorsturen. Het volledige proces is transparant voor het gastbesturingssysteem. Virtuele apparaten kunnen ook gebruikmaken van de Windows Server-virtualisatiefunctie Enlightened IO, voor opslag, netwerk, afbeeldingen en subsystemen voor invoer. Enlightened IO is een gespecialiseerde virtualisatiefunctie voor hoogwaardige communicatieprotocollen (zoals SCSI) die rechtstreeks gebruikmaken van VMBus en daarbij alle emulatielagen van de apparatuur overslaan. Hierdoor wordt de communicatie efficiënter, maar dit vereist wel een gast met een Enlightened IO-functie die de hypervisor en VMBus herkent. Hyper-V enlightened I/O
en een kernel die hypervisor herkent worden tijdens de installatie van de Hyper-Vintegratieservices toegevoegd. Integratiecomponenten, inclusief stuurprogramma's voor de VSC (Virtual Server Client), zijn ook beschikbaar voor andere clientbesturingssystemen. Voor HyperV is een processor vereist met hardwarematige virtualisatie, zoals processors met de Intel VT- of AMD-virtualisatietechnologie (AMD-V). Onderstaand diagram bevat een overzicht van de architectuur van een Hyper-V-omgeving op Windows Server 2008.
Overzicht van de Hyper-V-architectuur
De acroniemen en termen die in bovenstaand diagram worden gebruikt, worden hieronder uitgelegd: APIC – Advanced Programmable Interrupt Controller – Een apparaat waarmee prioriteitniveaus aan de interrupt worden toegewezen. Onderliggende partitie – Een partitie waarop een gastbesturingssysteem is geïnstalleerd - De toegang tot het fysieke geheugen en de apparaten wordt voor een onderliggende partitie door de VMBus (Virtual Machine Bus) of de hypervisor verzorgd. Hypercall – Een interface voor de communicatie met de hypervisor - De hypercall-interface zorgt voor toegang tot de geoptimaliseerde omstandigheden die door de hypervisor zijn verzorgd. Hypervisor – Een softwarelaag die zich tussen de hardware en een of meer besturingssystemen bevindt. De voornaamste taak van een hypervisor is het verschaffen van geïsoleerde uitvoeringsomgevingen, partities genaamd. De hypervisor regelt de toegang tot de onderliggende hardware.
IC – Integration component – Een component die ervoor zorgt dat onderliggende partities met andere partities en de hypervisor kunnen communiceren. I/O-stack – Invoer-/uitvoerstack MSR – Memory Service Routine Hoofdpartitie – Beheert functies op machineniveau, zoals stuurprogramma's voor apparaten, energiebeheer en hot addition/removal van apparaten. De hoofdpartitie (of bovenliggende partitie) is de enige partitie die rechtstreeks toegang heeft tot het geheugen en de apparaten. VID – Virtualization Infrastructure Driver – Verzorgt services op het gebied van partitiebeheer, het beheer van virtuele processors en geheugenbeheer voor partities. VMBus – Op kanalen gebaseerd communicatiemechanisme dat wordt gebruikt voor communicatie tussen de partities en voor de inventarisatie van apparaten op systemen met meerdere actieve virtuele partities. De VMBus wordt met de Hyper-V Integration Services geïnstalleerd. VMMS – Virtual Machine Management Service – Beheert de status van alle virtuele machines op onderliggende partities. VMWP – Virtual Machine Worker Process – Een component van de virtualisatiestack. Verzorgt beheerservices van de virtuele machine van het Windows Server 2008-exemplaar in de hoofdpartitie voor de gastbesturingssystemen in de onderliggende partities. Virtual Machine Management Service verzorgt afzonderlijke processen voor alle virtuele machines. VSC – Virtualization Service Client – Een synthetisch apparaatexemplaar op de onderliggende partitie. VSC' s maakt gebruik van de hardwarebronnen die door VSP's (Virtualization Service Providers) in de hoofdpartitie worden geleverd. Deze communiceren over de VMBus met de bijbehorende VSP's in de hoofdpartitie om aan de I/O-verzoeken van de onderliggende partities te voldoen. VSP – Virtualization Service Provider – Is op de hoofdpartitie geïnstalleerd en verzorgt synthetische apparaatondersteuning voor de onderliggende partities via de VMBus (Virtual Machine Bus). WinHv – Windows Hypervisor Interface Library - WinHv is een brug tussen de stuurprogramma's van een besturingssysteem met partities en de hypervisor, zodat de stuurprogramma's de hypervisor met standaard Windows-aanroepconventies kunnen aanroepen. WMI – De Virtual Machine Management Service bevat een aantal op WMI gebaseerde API's voor het beheer en de controle van virtuele machines.
Bijlage 2: Hardwarevereisten Voor Hyper-V hebt u specifieke hardware nodig. U herkent systemen met ondersteuning voor de x64-architectuur en Hyper-V door in de Windows Server-catalogus te zoeken naar Hyper-V als aanvullende voorwaarde (zie http://go.microsoft.com/fwlink/?LinkId=111228). Voor de installatie en het gebruik van de Hyper-V-rol hebt u het volgende nodig: Een x64-processor. Hyper-V is beschikbaar in 64-bit-edities van Windows Server 2008, in het bijzonder in de 64-bit-edities van Windows Server 2008 Standard, Windows Server 2008 Enterprise en Windows Server 2008 Datacenter. Hyper-V is niet beschikbaar voor 32-bit-edities (x86) of Windows Server 2008 voor Itanium-systemen. De Hyper-V-beheertools zijn echter wel beschikbaar voor 32-bit-edities. Virtualisatie met hardwareondersteuning. Is beschikbaar voor processors met een virtualisatieoptie, in het bijzonder processors met de Intel VT-technologie (Intel Virtualization Technology) of AMD AMD-V-technologie (Virtualization). Door hardware aangestuurde DEP (Data Execution Prevention) moet beschikbaar zijn en zijn ingeschakeld. In het bijzonder moet Intel XD bit (execute disable bit) of AMD NX bit (no execute bit) zijn ingeschakeld. Tip De instellingen voor virtualisatie met hardwareondersteuning en door hardware aangestuurde DEP zijn beschikbaar in het BIOS. De namen van deze instellingen kunnen echter wel afwijken van bovengenoemde namen. Voor meer informatie over ondersteuning van Hyper-V voor een bepaald type processor, neemt u contact op met de leverancier van de computer. Nadat u wijzigingen hebt aangebracht in de instellingen voor de virtualisatie met hardwareondersteuning of de door hardware aangestuurde DEP, moet u de computer uitschakelen en opnieuw inschakelen. Het opnieuw opstarten van de computer is wellicht niet voor alle instellingen vereist.
Geheugen De maximale hoeveelheid geheugen die kan worden gebruikt, is afhankelijk van het besturingssysteem: Voor Windows Server 2008 Enterprise en Windows Server 2008 Datacenter kan de computer worden geconfigureerd met maximaal 1 TB aan fysiek geheugen en virtuele machines met een van bovenstaande besturingssystemen kunnen met maximaal 64 GB per virtuele machine worden geconfigureerd. Voor Windows Server 2008 Standard kan de computer worden geconfigureerd met maximaal 32 GB aan fysiek geheugen en virtuele machines met bovenstaand besturingssysteem kunnen met maximaal 31 GB per virtuele machine worden geconfigureerd.
Processors Hyper-V wordt ondersteund op fysieke computers met maximaal zestien logische processors. Een logische processor kan een core-processor zijn of een processor met Hyper-Threading Technology. U kunt maximaal vier virtuele processors op een virtuele machine configureren. Het aantal virtuele processors dat door een gastbesturingssysteem wordt ondersteund, kan lager uitvallen. Raadpleeg voor meer informatie About Virtual Machines and guest VM Operating Systems. Hier volgen enkele voorbeelden van ondersteunde systemen en het bijbehorend aantal logische processors: Een systeem met één processor en twee kernen is voorzien van twee logische processors. Een systeem met één processor en vier kernen is voorzien van vier logische processors. Een systeem met twee processors en twee kernen is voorzien van vier logische processors. Een systeem met twee processors en vier kernen is voorzien van acht logische processors. Een systeem met vier processors en twee kernen is voorzien van acht logische processors. Een Hyper-Threaded-systeem met vier processors en twee kernen is voorzien van zestien logische processors. Een systeem met vier processors en vier kernen is voorzien van zestien logische processors.
Netwerken Hyper-V biedt de volgende netwerkondersteuning: Elke virtuele machine kan met maximaal twaalf virtuele netwerkadapters worden geconfigureerd, acht daarvan kunnen het type Netwerkadapter hebben en vier het type Legacynetwerkadapter. Het type Netwerkadapter heeft betere prestaties, maar daarvoor is wel een stuurprogramma van een virtuele machine vereist die deel uitmaakt van de integratieservicepakketten. Iedere virtuele netwerkadapter kan met een statisch of een dynamisch MAC-adres worden geconfigureerd. Iedere virtuele netwerkadapter is voorzien van ondersteuning voor een geïntegreerde VLAN (Virtual Local Area Network) en kan een uniek VLAN-kanaal toegewezen krijgen. U kunt een onbeperkt aantal virtuele netwerken hebben, met een onbeperkt aantal virtuele machines per virtueel netwerk. Raadpleeg voor meer informatie over virtuele netwerken Configuring Virtual Networks. Opmerking Een virtueel netwerk kan niet op een draadloze netwerkadapter worden aangesloten. Er kunnen dus geen draadloze netwerkfaciliteiten op virtuele machines worden toegepast.
Opslag Hyper-V biedt ondersteuning voor diverse opslagopties. U kunt onderstaande fysieke opslagmethoden gebruiken met een server waarop Hyper-V wordt uitgevoerd:
Rechtstreekse opslag: u kunt SATA (Serial Advanced Technology Attachment), eSATA (external Serial Advanced Technology Attachment), PATA (Parallel Advanced Technology Attachment), SAS (Serial Attached SCSI), SCSI, USB en Firewire gebruiken. SANs (Storage area networks): u kunt iSCSI (internet SCSI), Fibre Channel en SAS-technologieën gebruiken. Opslag via het netwerk
U kunt de volgende vier typen virtuele opslag voor een virtuele machine gebruiken. Virtuele vaste schijven van maximaal 2040 GB. U kunt virtuele vaste schijven gebruiken, waardoor u het aantal virtuele vaste schijven dynamisch uitbreidt, en differentiërende schijven. Virtuele IDE-apparaten. Iedere virtuele machine biedt ondersteuning voor maximaal vier IDEapparaten. De opstartschijf (soms ook wel boot disk genoemd) moet op een van de IDE-apparaten zijn aangesloten. De opstartschijf kan een virtuele of een fysieke vaste schijf zijn. Virtuele SCSI-apparaten. Iedere virtuele machine biedt ondersteuning voor maximaal vier virtuele SCSI-controllers en iedere controller biedt ondersteuning voor maximaal 64 schijven. Dat betekent dat iedere virtuele machine met maar liefst 256 virtuele SCSI-schijven kan worden geconfigureerd. Fysieke schijven. Voor fysieke schijven die rechtstreeks op een virtuele machine zijn aangesloten (ook wel doorgangsschijven genoemd), bestaat geen beperking met betrekking tot de grootte. De beschikbare grootte wordt bepaald door het gastbesturingssysteem. Opslagcapaciteit virtuele machine. Door virtuele vaste schijven te gebruiken heeft iedere virtuele machine een maximale opslagcapaciteit van 512 TB. Als u fysieke schijven gebruikt, wordt de capaciteit nog groter. Deze grote wordt bepaald door wat er door het gastbesturingssysteem wordt ondersteund. Snapshots virtuele machine. Hyper-V biedt ondersteuning voor maximaal 50 snapshots per virtuele machine. Opmerking Hoewel een virtuele machine een virtueel IDE-apparaat als opstartschijf moet gebruiken om het gastbesturingssysteem op te starten, zijn er veel verschillende opties beschikbaar voor het fysieke apparaat dat de opslag voor het virtuele IDE-apparaat moet verzorgen. U kunt bijvoorbeeld alle typen fysieke opslagapparaten uit voorgaande lijst gebruiken.
Bijlage 3: Hardwareconfiguratie Testconfiguratie SQL Server Hyper-V Processor
Server Dell R900
Opslag HDS AMS1000
Cache
Quad-core Intel 2,40 GHz, 1066 Mhz bus, 4 sockets 6 MB L2 cache
Geheugen HBA Besturingssysteem Netwerk
64 GB fysiek geheugen 2x 4Gb/s Dual Port Emulex Windows Server 2008 SP1 2 x Broadcom BCM5708C NetXtreme II GigE
Gegevens
8 x 8 aandrijfassen (4+4) (RAID 1+0)
Log:
4 x 4 aandrijfassen (2+2) (RAID 1+0)
Back-ups 6 aandrijfassen (5+1) (RAID 5) Besturingssysteem 4 schijven (1+1) (RAID 1+0)