Zoals bij alle producten, heeft het opzetten van een Hyper-V omgeving ook Best-Practices.
Door deze richtlijnen te volgen kun je veel euvels vermijden en jezelf een hoop werk besparen
met het zoeken naar de oorzaak achter problemen.
Best Practices
Hyper-V en andere rollen op de server
Het wordt aangeraden om een server met de Hyper-V rol alleen voor deze rol te gebruiken.
Dit omdat de Hyper-V rol, met actieve VM’s, een grote hoeveelheid resources kan verlangen.
VM’s overzetten van Virtual PC/Server naar Hyper-V
Deïnstalleer de VMAdditions binnen de VM voor de machine over te zetten.
Hoe dit te doen, is omschreven in de Virtual Machine Migration Guide: How To Migrate from Virtual Server to Hyper-V
Stel de VHD’s in op een vaste grootte
Het is mogelijk “thin privisioned” virtuele harddisks te gebruiken. Dit betekend dat de disk
groter zal worden, tot de maximale aangegeven grootte, zodra dit nodig is. Dit principe
bespaard schijfruimte, omdat de ruimte pas gealloceerd zal worden zodra deze nodig is.
Hoewel het ruimte bespaard, zal deze technologie ook een kleine aanslag doen op je
resources (CPU, disk I/O, etc). Best Practice binnen Hyper-V is het aangeraden om een
vaste grootte op te geven voor de virtuele harddisks.
Hoe je de virtuele disks kunt configureren, incl andere mogelijkheden
dan “thin provisioned”, zijn beschreven in het volgende Microsoft knowledgebase artikel.
Installeer de Integration Services in de VM’s
De Integration Services zorgen voor de communicatie vanaf Hyper-V naar de omgeving
binnen de VM. Deze services zorgen ook voor de nodige optimalizatie, onder andere
door een heartbeat, tijd synchronisatie met de interne klok binnen de VM, etc.
Snapshots en “Save state”
Domain Controllers en geclusterde SQL servers zijn goede voorbeelden waarbij het
ten strengste wordt afgeraden gebruik te maken van snapshot technologie of het
zogenoemde “save state”. Als hier toch van gebruik gemaakt wordt, dan is er een
grote kans dat de data in de VM niet meer up-2-date is, en er inconsistentie
ontstaat in je cluster, of zelfs in je Active Directory.
Denk dus goed na voor 1 van deze technologieën toe te passen op een VM.
Efficiënt gebruik maken van netwerkpoorten
Indien je een Hyper-V host hebt met meerdere netwerkkaarten of een netwerkkaart
met meerdere poorten, dan kan het voor een performance verbetering zorgen om
iedere netwerkpoort een eigen virtual switch te geven. Dit zorgt ervoor dat je
de VM’s kunt verspreiden over meerdere virtuele switches, waardoor de load niet
over 1 maar over meerdere netwerkpoorten verdeeld zal worden.
Deze Best-Practice is bedoeld voor hosts waarbij de VM’s het extreem druk
hebben qua netwerkverkeer.
Zorg dat de VM’s zijn opgeslagen met High Availability
Omdat de VM’s afhankelijk zijn van hun configuratiebestanden wordt het aangeraden
deze bestanden beschikbaar te stellen via een opslagmedium met High Availability.
Dit kan bijvoorbeeld door gebruik te maken van Cluster Shared Volumes.
Tips
CD of ISO mounten bij opstarten VM
Zorg ervoor dat de VM niet automatisch een CD of ISO mount bij het opstarten als dit
niet nodig is. Dit scheelt zowel disk I/O als CPU gebruik op de host.
Hardware versnelling voor video drivers
Zet binnen de VM’s “hardware acceleration” aan op de virtuele video kaart.
Schakel de TCP autotuning diagnostic tool uit
Sinds Windows Vista wordt automatisch netwerkverkeer gemonitoord zoals
bandbreedte, netwerkvertraging en applicatievertraging.
Dit kan soms handig zijn bij het onderzoeken van problemen maar, gezien je het
altijd aan kan zetten als er zich problemen voordoen, zet ik het altijd uit.
Microsoft heeft hiervan een knowledgebase artikel.
Hyper-V en CPU monitoren
Voor het monitoren van CPU gebruik op de Hyper-V host wordt aangeraden om gebruik
te maken van de Hyper-V Hypervisor Logical Processor performance counters.
Dit omdat de monitor mogelijkheden binnen TaskManager niet de volledige scope van
het CPU gebruik laat zien.
Virtuele harddisks
Gebruik, indien mogelijk, de SCSI virtuele harddisk controller binnen de VM’s.
Deze heeft een hogere doorvoersnelheid, evenals hij zorgt voor een lagere CPU overhead.
Gebeugen toekennen met Dynamic Memory
Als Dynamic Memory gebruikt wordt binnen Hyper-V dan is het Best-Practice om deze
goed in te richten. De maximale RAM is eenvoudig, geef hier aan hoeveel geheugen
de VM maximaal toegewezen mag krijgen als er gebruik gemaakt
wordt van Dynamic Memory. De Startup-RAM is echter lastiger... hier moet
aangegeven worden hoeveel geheugen de VM toegewezen krijgt bij het opstarten.
Als deze waarde te laag is, zal er te vroeg gebruik gemaakt worden
van Dynamic Memory, wat dus ook CPU, disk en geheugen capaciteit zal gebruiken.
Het is dus taak om te monitoren wat de waarde is die de VM minimaal nodig
heeft om goed te werken zonder dat Dynamic Memory gelijk zijn werk gaat doen.
Mijn persoonlijke ervaring heeft mij geleerd om de minimale waarde
te nemen, en hier 20% bij te doen.
Performance optimalisatie binnen de VM
· Installeer de laatste versie van de Hyper-V Integration Services.
· Gebruik binnen de VM de Microsoft synthetische netwerk adapter.
· Verwijder ongebruikte hardware, zoals de geluidskaart, COM poorten, etc.
· Schakel de screensaver uit, zowel op de host als in de VM’s.
· Gebruik het gebalanceerde energieplan, zowel op de host als in de VM’s.
· Schakel achtergrondservices binnen de VM’s uit, zoals bijvoorbeeld SuperFetch en Windows Search en Tablet Features.
· Schakel AeroGlass en andere visuele effecten uit.
Bovenstaand advies heb ik geschreven uit ervaring, maar ook heb ik veel informatie uit een
document van Microsoft: “Performance Tuning Guidelines for Windows Server 2008 R2”.