feature In het kort:
Hyper-V Dynamic Memory in R2 SP1
• Ballooning • Geheugen efficiëntie • Nieuwe config-file waarden • Beheer belangrijk
dennis harders Met de komst van SP1 voor Server 2008 R2 heeft Microsoft een belangrijke stap voorwaarts gemaakt op het gebied van Memory Management binnen Hyper-V. Dynamic Memory is een uitbreiding op de Hyper-V R2 functionaliteit en beheert alle beschikbare geheugen van een Hyper-V host in een “Memory Pool” en herverdeelt dit over alle Virtuele Machines (VM) wanneer de workload verandert. In plaats van een specifiek geheugenomvang te definiëren, worden een minimum en maximum gedefinieerd waartussen de geheugenomvang mag variëren.
Servervirtualisatie Dankzij servervirtualisatie worden fysieke resources vaak beter benut. Dat wil zeggen dat er een hogere utilisatiefactor wordt behaald. Een belangrijk component van de resources op een host is het fysieke geheugen. Voor het maximum voor het aantal VMs op een host is de beschikbaarheid van fysiek geheugen bepalend. Wanneer de Hypervisor alleen een statisch toegewezen geheugenomvang ondersteunt per VM, heeft dat zijn impact op het maximum aantal VMs en dus op het consolidatie ratio van de Hyper-V omgeving. In Hyper-V 1.0 en bij Windows Server 2008 R2, wordt tot nu toe het virtuele geheugen statisch ingesteld per VM. Als een VM wordt gestart, claimt de VM dit geheugen en dit geheugen wordt pas vrijgegeven als de VM wordt weggeschreven of gestopt. Dit resulteerde in beperkingen en leverde de vraag vanuit de markt op om de geheugentoewijzing op een meer dynamische wijze te doen. Deze wens is opgepakt door het Hyper-V team. Nu met de release van SP1 voor Hyper-V Server en Windows Server 2008 R2 introduceert Microsoft de mogelijkheid om geheugen dynamisch toe te wijzen aan VMs waarbij er op een intelligente wijze naar het geheugengebruik wordt gekeken. De wijze waarop dit gebeurt, is gebaseerd op bestaande kennis die Microsoft al jaren in huis heeft. Het gebeurt namelijk met de kennis die is opgedaan met het geheugenbeheer dat in de Windows Kernel zit. Om de Hyper-V uitbreiding “Dynamic Memory Management” op de juiste wijze te laten functioneren, hebben het Hyper-V team en het Windows Core team nauw samengewerkt.
geheugencapaciteit. Het proces helpt om geheugenresources efficiënter te gebruiken en maakt het mogelijk om Hyper-V automatisch geheugenomvang van individuele VMs aan te passen terwijl de VMs draaien. Dynamic Memory (DM) wordt gerealiseerd met een host en guest op het VSP/VSC/VMBus model. Daarvoor is de “Integration Services” architectuur uitgebreid met een DM Component. Na de update van de “Integration Services” komt er een Dynamic Memory VSC-kernelcomponent bij die verantwoordelijk is voor het uitvoeren van het dynamisch toewijzen van het geheugen. Op de host zorgt de VSP voor de algehele regie over het toewijzen en herverdelen van het geheugen voor alle Virtuele Machines. In de guest gebruikt de VSC informatie uit 4 performance-counters om het geheugengebruik te inventariseren. Wanneer er geheugen nodig is bij een van de VMs wordt er met “ballooning”technologie geheugen geclaimd bij een andere VM waar het geheugengebruik lager is is. Het komt er bij ballooning op neer dat het extra geheugen wordt vrijgemaakt, door het binnen andere VM te claimen. In die VM lijkt het alsof
De werking van Dynamic Memory In essentie gaat het bij dynamisch geheugen om een algoritme voor het toevoegen en “verwijderen” van
Figuur 1: Dynamic Memory Integration Services Architecture. TechNet Magazine | oktober 2010 35
een reguliere applicatie langs de gewone weg het geheugen opeist. Ballooning vertrouwt daarmee op het reguliere geheugenbeheer binnen het OS van de guest. Langs die weg maakt ballooning bij geheugenkrapte vanzelfsprekend ook aanspraak op voorzieningen binnen een OS als een pagefile. Na het claimen van geheugen binnen een guest, verzorgt de host verder de overdracht van dit geheugen naar de VM die het geheugen nodig heeft. Het afstemmen van geheugengebruik op deze wijze tussen host en guest biedt veel voordelen voor Microsoft Windows besturingssystemen als Guest OS. Een nadeel is dat het op dit moment nog niet werkt met Linux besturingssystemen. Hieronder is de DM architectuur te zien. Totaal fysiek geheugen – root-reserve parent partition (omvang host) = speelruimte dynamisch geheugen voor VMs.
Hoe wordt het geheugen verdeeld De wijze waarop DM het benodigde geheugen berekent, gaat via een proces dat “Memory Pressure” heet. De “pressure” waarde wordt bepaald door naar het totale “committed memory” van de guest-OS in de VM te kijken. De waarde is een ratio tussen hoeveel geheugen de VM nodig heeft en hoeveel het eist. Het geheugen dat wordt toegewezen is het totaal van “comitted memory” plus het “memory buffer” percentage maal het committed memory. Vaak gebruikt de VM dit direct voor de filecache van het OS. Is DM nu hetzelfde als memory-overcommit dat wordt gebruikt binnen andere virtualisatieplatformen? Het antwoord is: nee. DM beweegt zich dynamisch binnen de ruimte die het fysiek beschikbare geheugen biedt. Er wordt dus niet meer geheugen toegewezen dan beschikbaar is. Vandaar dat we niet spreken van “memory overcommit”. De volgende berekening is van toepassing voor de host: In de praktijk betekent dit als een Hyper-V host 64GB geheugenomvang heeft en een root-reserve van 2GB er een speelruimte is van 62GB voor de “memory pool”. Als er 62 virtuele machines met daarin Windows draaien op deze
host met een startup-memory van 1024 MB, is de “memory pool” volledig gebruikt. De dynamic memory balancer zal het geheugen evenredig verdelen over alle VMs. Wanneer nu de 63-ste- VM wordt opgestart, verschijnt er een melding dat het opstarten niet mogelijk is wegens een tekort aan resources. Dus vandaar geen memory overcommit principe. Mocht er geen DM speelruimte (no free pages) meer zijn, dan laat de host met ballooning de VMs pagen, de host paged zelf niet. Dit wordt ook wel guest-paging genoemd. Dit gebeurt ook al in de niet-gevirtualiseerde wereld met behulp van het “swap space” of “page-file” principe. Waarom wordt dit gedaan in de guest? Omdat het guestOS beter weet wat er gepaged kan worden dan de host. In tegenstelling tot bijvoorbeeld VMware, vertrouwt Microsoft het juiste inschattingsvermogen van het guest-OS en gebruikt de informatie van de guest om Dynamic Memory te optimaliseren. Nu we meer weten over de werking van Dynamic Memory, zal het duidelijk zijn dat de hypervisor wat meer de limieten gaat zoeken in geheugengebruik en dat we in het inrichten van de host meer aandacht moeten besteden aan de omvang van de root reserve voor de parent partition. Met de implementatie van SP1 wordt een aantal nieuwe registry-keys toegevoegd aan de Hyper-V hosts en guests om Dynamic Memory optimaal te kunnen beheren en managen. Er wordt nu nog gewerkt aan de definitieve vorm. Wanneer SP1 wordt uitgebracht, zal duidelijk zijn welke keys het zijn geworden.
Voorbereidingen installatie SP1 Om Dynamic Memory te kunnen gebruiken, moeten er wel wat voorbereidingen worden gedaan. Dynamic Memory werkt alleen op Windows Server 2008 R2 met de Hyper-V rol of Microsoft Hyper-V Server 2008 R2 als host. Guestsupport is op dit moment in de beta beperkt tot Enterprise en Datacenter edities, zowel 32- en 64bits van Windows Server 2003, 2003 R2 en 64-bits voor2008 en 2008 R2.Na een shutdown van de VMs (dus geen save state) merge snapshots zijn VMs klaar voor de update. Save states zijn niet compatibel tussen verschillende versies van Hyper-V. Maak een gewone backup van de VMs om de update in geval van nood terug te kunnen draaien. Belangrijk is dat eerst de host wordt geüpdate en daarna de guest. In alle gevallen treedt er down-time op (neem dit mee in de implementatieplanning). Vergeet niet dat dit betaservicepack niet upgradable is naar de uiteindelijke versie en er dus een deïnstallatie nodig is bij de implementatie van de uiteindelijke versie van SP1.
Updaten Hyper-V host
Figuur 2: De-installeren van een niet ondersteund taalpakket 36
Normaal gesproken verloopt installatie van een Servicepack vlekkeloos en heeft u geen last van neveneffecten. Bij een beta-servicepack zitten er wat haken en ogen aan. Wanneer U deze servicepack wil installeren op bijvoorbeeld Windows Hyper-V Server 2008 R2, treedt er een melding op over geïnstalleerde talen die niet worden ondersteund. De
servicepack ondersteunt alleen Engels, Duits, Frans, Spaans en Japans als taal en u zult waarschijnlijk bepaalde talen moeten de-installeren. Wellicht ziet u hier voor het eerst dat er andere talen zijn geïnstalleerd. De meest compacte installatie van Hyper-V Server 2008 R2 is 1.2 GB en heeft al twee talen aan boord: Engels en Chinees. Het Chinese taalpakket zal dan gede-installeerd moeten worden voordat de servicepack geïnstalleerd kan worden. Dit kan eenvoudig met een tool die onderdeel is van elke Windows installatie:
U kunt deze waarden ook terugvinden in de configuratiefile waar we later op terugkomen. De volgende waarden kunnen worden aangepast: Startup RAM
• Opstartgeheugen dat aan het BIOS wordt doorgegeven • Waarde tussen de 8 MB en 65536 MB • Aanbevolen is om dit niet lager dan 512 MB in te stellen voor Windows 7 en Server 2008 R2
• Aanbevolen is ook om dit niet te hoog in te stellen File Version VMbus.sys
2008 R2 6.1.7600.16385
2008 R2 SP1 6.1.76001.16562
•
omdat dit voor de VM een minimum waarde is. De geheugenomvang kan bij krapte kan niet onder deze waarde komen. De bufferinstelling is de plek om wat extra geheugen toe te kennen Kan alleen aangepast worden als de VM is gestopt
Maximum RAM
• Is het maximale geheugen dat een VM zich kan toeeigenen
• Kent een maximale waarde van 65536MB • Kan alleen worden aangepast als de VM gestopt is Figuur 3: Virtual Dynamic Memory Device
Memory Buffer
• Deze waarde resulteert in een buffer waarvan de de “Language Pack Installer”. Het op te starten bestand LPKSETUP.exe is te vinden in de System32 directory en kent zowel een GUI modus als een CLI modus. Wanneer de tool is opgestart, kan er eenvoudig de taal worden geselecteerd voor deïnstallatie.
Updaten Hyper-V Guest Voordat u Dynamic Memory kunt gebruiken, moet u uw integration services updaten. Dit kan op meerdere manieren: • Er kan een upgrade van het guest-OS worden gedaan door SP1 te installeren • Er kan een upgrade worden gedaan van alleen de integration services via de Hyper-V console (via de optie “Insert Integration Serices Setup Disk”) • U kunt een reguliere installatie vanaf een share uitvoeren. De bestanden in de directory: “C:\Windows\VMguest\ Support\” worden geüpdate tijdens de installatie van SP1 en de bestanden kunnen worden gebruikt om bijvoorbeeld een package te maken en te distribueren via SCCM. Om te controleren of Integration Services zijn geïnstalleerd, kunt u de versie informatie opvragen van bijvoorbeeld C:\Windows\System32\Drivers\VMbus.sys. Er wordt een nieuw virtueel device toegevoegd in de VM. Dit virtual dynamic memory device geeft het geheugen gebruik van de guestdoor aan de host.
• • •
omvang wordt berekend als percentage over de omvang van de VM. Deze geheugenomvang geeft samen met omvang van de startup-ram ruimte aan file-cache en kleine pieken Deze geheugenomvang wordt in de VM onder normale omstandigheden standaard toegekend door de dynamic memory balancer Is een waarde tussen de 5 en 95 procent De waarde kan dynamisch worden aangepast
GUI
ConfigFile
Startup RAM (512MB)
<size type=”integer”>512
Maximum Ram (2048MB)
2048
Memory Buffer (10%)
10
Memory Priority (75%)
<priority type=”integer”>7500
Figuur 4: GUI-waarden en config-waarden uit de configuratie-file
Instellingen Dynamic Memory Om Dynamic Memory goed te laten werken is een aantal instellingen relevant in de Hyper-V Manager op de VM. TechNet Magazine | oktober 2010 37
Figuur 4: VMs zonder ballooning
Er wordt ook nog een regel toegevoegd die geheugen claimt. Deze waarde van 512MB is gelijk is aan de “Startup RAM” waarde. 512 Figuur 5: VMs met ballooning
Monitoring van Dynamic Memory
Memory Priority • Dit is een instelling die de prioriteit in geheugentoekenning bepaalt ten opzichte van andere VMs • Is een waarde tussen 0 en 10.000 en kan via de GUI in 8 stappen van 1250 worden ingesteld. Dit zal nauwkeuriger kunnen worden ingesteld met Powershell is de verwachting • Kan dynamisch worden aangepast De Memory Buffer en Memory Priority zijn waarden die kunnen worden aangepast als de VM draait. De reden is dat wijzigingen in deze waarden terechtkomen bij de memory load balancer. Dus bij een substantiële verandering in workload is er niet langer downtime omdat de geheugenbehoefte moet worden aangepast. Er staan nog twee waarden in de config-file die niet zijn terug te vinden in de GUI. Als DM enabled wordt in de Hyper-V Manager, dan vindt u in de config-file de volgende regel: True
Figuur 6: 2 VMs online met 1024MB “Startup Memory” 38
In de Hyper-V Manager Console zijn nieuwe kolommen te zien genaamd “Current Memory” en “Memory Available”. Normaal staan er positieve waarden in de kolom “Memory Available”. Als hier negatieve waarden zijn, betekent dit dat er ballooning heeft plaatsgevonden in het guest-OS en er geheugen is onttrokken aan de VM. Wanneer de VM meer geheugen nodig heeft en er geen geheugen beschikbaar is in de memory pool op de host, dan zal de VM pages gaan wegschrijven naar disk. Wanneer de performance inzakt voor een specifieke VM, dan is er een aantal opties om dit te verhelpen. Het kan helpen waarde van de “Memory Priority” te verhogen. Als dit niets uithaalt, dan is het wellicht raadzaam om de pagefile in het guest-OS aan te passen en hier waarden in te vullen die de workload ondersteunen. Dit betekent wel meer disk-i/o. Dit kan impact hebben op andere VMs. Hieronder is te zien dat er ballooning heeft plaatsgevonden. In Console-1 draaien drie VMs die redelijk uit de voeten kunnen met het beschikbaar gestelde geheugen. Wanneer er een vierde VM wordt opgestart, wordt er geheugen ontrokken uit die drie VMs, op basis van prioriteit en komen er negatieve waarden te staan. U kunt op twee manieren het geheugengedrag monitoren. De eerste mogelijkheid is met Hyper-V Manager. De tweede optie heeft meer details, dankzij twee nieuwe groepen
Figuur 7: 3 VMs online met 1024MB “Startup Memory”
Hyper-Vperformance-counters voor dynamic memory. • Hyper-V Dynamic Memory Balancer • Hyper-V Dynamic Memory VM De groep “Dynamic Memory Balancer” kijkt naar het gedrag van de host. De groep Dynamic Memory VM zijn counters die per VM kunnen worden bekeken. Een nuttige counter om te bekijken, is de Current Pressure Counter. Hoe hoger deze waarde hoe minder geheugen de VM beschikbaar heeft. Hoe lager deze waarde in perfmon, hoe meer speling er is. Met behulp van deze counter is ook goed te zien dat Dynamic Memory pas actief wordt als het guest-OS volledig is opgestart: de waarde in de Memory Available-kolom verschijnt pas later en de Perfmon-lijn blijft een tijd vlak tijdens het booten en nog enige tijd daarna. Het duurt even voordat de Windows Kernel het DM VSC component aanspreekt. Echter wanneer er een VM is gestart, claimt de host zonodig direct geheugen uit de “Memory Pool”. Hieronder een weergave van twee Perfmon-grafieken met het volgende scenario: • De host heeft 4GB geheugen en 1 GB root reserve voor de parent partition • 3 VMs met 1024MB “Startup Memory” • 1 VM met 512MB “Startup Memory” Als er een vierde VM wordt opgestart, zal de dynamic memory balancer aangeven dat er niet genoeg resources zijn om deze te booten.
Monitoren Dynamic Memory vanaf externe systemen Microsoft System Center Virtual Machine Manager die normaal gesproken gebruikt wordt om een Hyper-V omgeving te beheren, kent nog geen ondersteuning voor de SP1 beta. De verwachting is dat hiervoor een update wordt uitgebracht in de vorm van een featurepack of servicepack als de uiteindelijke versie van Servicepack 1 wordt uitgebracht. Het is dan ook nu niet zinvol om een SCVMM-agent te draaien op een Hyper-V host met SP1. OpsMgr daarentegen werkt verder gewoon prima en de counters worden netjes uitgelezen. Echter in de rapporten zult u geen Dynamic Memory waarden te zien krijgen. Ook hier is de verwachting dat hiervoor nieuwe managementpacks uitgebracht gaan worden. Omdat we de Essential System Center tijdens deze beta fase tools beperkt kunnen gebruiken,vallen we terug op de Hyper-V Manager. Deze Hyper-V Manager moet wel op een server draaien waar SP1 op is geïnstalleerd, anders krijgt u de nieuwe functionaliteit in de vorm van nieuwe kolommen niet te zien. De SP1-beta kent ook een upgrade voor de RSAT tools die op Windows 7 draaien om Hyper-V op afstand te beheren. Als de RSAT tools al zijn geïnstalleerd op een Windows 7 computer, kunnen deze tools met behulp van de servicepack worden geüpgrade. Wel moet u eerst SP1 installeren en dan pas de RSAT tools, anders werkt het niet.
Figuur 8: 4e VM kan niet booten met 512MB “Startup Memory”
Rekening houding met Wanneer u de SP1-beta voor Windows 2008 R2 en Windows 7 test, zijn er een paar zaken waarmee u rekening moet houden: • De Windows Server edities Standard en Web ondersteunen geen dynamic memory • Migraties van VMs met dynamic memory enabled wordt alleen ondersteund tussen host waarop SP1 is geïnstalleerd • Servicepack 1 beta moet worden gede-installeerd als de servicepack in zijn definitieve versie uitkomt
Nuttige resources • Dynamic Memory Technical Overview whitepaper http://download.microsoft.com/download/E/0/5/ E05DF049-8220-4AEE-818B-786ADD9B434E/ Implementing_and_Configuring_Dynamic_Memory.docx • Hyper-V Dynamic Memory Evaluation Guide http://technet.microsoft.com/en-us/library/ ff817651(WS.10).aspx • Windows Server 2008 R2 Service Pack 1 – TechNet Center http://technet.microsoft.com/en-us/library/ ff817647(WS.10).aspx • Hyper-V: Dynamic Memory Survival Guide http://social.technet.microsoft.com/wiki/contents/ articles/hyper-v-dynamic-memory-survival-guide.aspx
dennis harders is Senior Consultant en Solution Manager Elastic Datacenter voor Avanade Nederland. Hij houdt zich bezig met Datacenter Optimalisatie en Virtualisatie en is betrokken bij de ontwikkeling van Multi Cloud Management oplossingen binnen Avanade. Dennis heeft met een aantal mensen van zijn team de SVAM Services Ready accreditatie behaald in samenwerking met Microsoft Consultancy Services. Dennis is tevens Virtual Technical Sales Professional – Datacenter @ Microsoft Nederland. Dennis werkt vier jaar voor Avanade en is tien jaar werkzaam in de IT.
TechNet Magazine | oktober 2010 39
appendix a: bijlagen ter onderbouwing
appendix b: oneliners
Hyper-V configuratiefiles voor en met SP1.
1. SP1 geeft meer controle over de root reserve van de “Parent Partition”
Voorbeeld configuratiefile zonder SP1: <memory> <size type=”integer”>1024
2. Windows is goed in het managen van geheugen op OS en applicatieniveau. “Dynamic Memory” gebruikt deze kennis om binnen de virtualisatielaag beter om te gaan met het beschikbare geheugen
Voorbeeld configuratiefile met SP1:
3. Dynamic Memory kan per VM worden aangezet waardoor je optimaal controle houdt qua geheugengedrag over de Virtuele Machines
<memory> <size type=”integer”>512 True 2048 <priority type=”integer”>7500 1024 5
Supported Guest Server OS SP1 Final
Editie
OS versie Windows Server 2003 Windows Server 2003 R2 Windows Server 2008 Windows Server 2008 R2 Linux OS
Standard Y Y Y Y N
Supported Guest Client OS SP1 Final
Editie
OS versie Vista windows 7
Home N N
Supported Guest Server OS SP1 Beta
Editie
OS versie Windows Server 2003 Windows Server 2003 R2 Windows Server 2008 Windows Server 2008 R2 Linux OS
Standard N N N N N
Supported Guest Client OS SP1 Beta
Editie
OS versie Vista Windows 7
Home N N
40
Web Y Y Y Y
enterprise Y Y Y Y
datacenter Y Y Y Y
Professional/Business Y Y
Ultimate Y Y
Web N N N N
datacenter Y Y Y Y
enterprise Y Y Y Y
Professional/Business Y Y
Ultimate Y Y
4. Dynamic Memory is geen Memory over commit 5. Je kan VMs met en zonder DM enabled naast elkaar draaien op dezelfde host 6. Ook Dynamic Memory vraagt nog steeds een juiste sizing qua geheugen 7. Consolidatie ratio is het aantal virtuele machines dat geplaatst wordt op een fysieke host uitgedrukt in X:Y.