Logo faq-o-matic.net
Logo faq-o-matic.net

Hyper-V-Sizing: Virtuelle und echte CPUs

von veröffentlicht am26. Januar 2011, 07:24 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Design, Virtualisierung, Windows Server 2008 R2   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 15. Juni 2012

imageEine wichtige Frage bei der Virtualisierung betrifft die Ausstattung der Host-Server mit CPUs und die damit zusammenhängende Zahl von virtuellen Maschinen, die auf einem solchen Host betrieben werden können. Zwar ist der wichtigste limitierende Faktor immer der Arbeitsspeicher, doch auch das CPU-Sizing ist natürlich von Interesse.

Für die meisten virtuellen Umgebungen ist es problemlos möglich, den Prozessor zu “überbuchen”, d.h. den virtuellen Servern mehr CPUs zuzuweisen, als tatsächlich physisch im Host-Server vorhanden sind. Zu den Hauptaufgaben des Hypervisors gehört es ja schließlich, den VMs Rechenzeit zuzuteilen. Im Falle von Hyper-V 2.0 (als mit Windows Server 2008 R2 auf dem Hostsystem) gilt ein Verhältnis zwischen 4:1 und 8:1 als sinnvoll. Microsoft leistet bei Servervirtualisierung unter Windows Server 2008 R2 Unterstützung für ein Verhältnis von bis zu 8:1; nur für VDI-Umgebungen (virtuelle Desktops) mit virtuellen Windows-7-Rechnern liegt die Grenze bei 12:1.

Update Juni 2012: Die maximalen Supportgrenzen von 8:1 bzw. 12:1 gelten für Hyper-V-Hosts unter Windows Server 2008 R2. Mit Windows Server 2012 werden diese Grenzen entfallen, d.h. eine stärkere Überbuchung der CPU wird dann kein pauschales Support-Hindernis mehr sein.

Was aber bedeuten diese Angaben?

Ein typischer Host-Server für Virtualisierung hat heute zwei physische CPUs mit jeweils vier, sechs oder acht CPU-Kernen (Cores). Das ebenfalls einsetzbare Hyper-Threading erhöht die Zahl der “sichtbaren” Prozessoren und ist im Fall der Virtualisierung von großem Interesse: Auf modernen CPUs sollte man das Hyperthreading für die Virtualisierung nutzen und erhöht damit die Zahl der verfügbaren „logischen“ Prozessoren (LP). Unser Beispielserver (zwei physische CPUs mit je vier Cores) hat also acht CPU-Kerne, die er für die Virtualisierung einsetzen und an die VMs verteilen kann. Pro Kern gibt es zwei logische Prozessoren durch die Hyperthreads, macht also 16 LPs. (Das Limit an verwaltbaren LPs liegt bei Windows Server 2008 R2 bei 64, mit Windows Server 2012 wird es bei 320 liegen.)

Ein Verhältnis von 4:1 bedeutet nun, dass jeder LP in vier virtuelle CPUs (vCPUs) “aufgeteilt” wird. Das ist ein rein rechnerischer Vorgang, der besagt, dass ein LP problemlos vier CPUs für virtuelle Maschinen darstellen kann (also treibt jeder LP in einem Viertel der verfügbaren Zeit jeweils eine bestimmte VM an). Diese rechnerische Größe ergibt in unserem Beispiel nun also vier mal 16, sprich 64 vCPUs, die auf die VMs verteilt werden können. Legt man ein Verhältnis von 8:1 zugrunde, so kommt man sogar auf 128 vCPUs.

Direkt umgerechnet hieße das nun also für das Verhältnis 4:1, dass auf dem Server bis zu 64 virtuelle Server mit jeweils einer virtuellen CPU problemlos laufen sollten. Beim Verhältnis 8:1 käme man sogar auf 128 VMs zu je einer vCPU. Weist man einzelnen VMs mehr als eine vCPU zu, so verändert sich natürlich die Gesamtzahl an möglichen VMs.

Vorsicht: Der Host muss auch arbeiten!

Viele Admins übersehen aber, dass auch der Host selbst für seine Arbeit Reserven braucht, und zwar sowohl Arbeitsspeicher als auch CPU-Leistung. Eine Faustformel besagt, dass man “einen halben Core” an CPU-Leistung und zwei bis vier Gigabytes an RAM für den Host reservieren sollte. Macht bei der Grundlage 4:1 also vier vCPUs, bei der Grundlage 8:1 acht vCPUs, die man für den Host zurückhält, also nicht an VMs zuweist.

Bleiben bei der 4:1-Zuordnung also 60 vCPUs und bei der 8:1-Aufteilung 120 vCPUs für die tatsächlichen VMs. Wie oben erwähnt, stellt bei einer solchen Leistungsreserve aber sicher der Arbeitsspeicher das tatsächliche Limit dar.

Immer rein – kost ja nix!?

Diese große Reserve sollte nun aber nicht dazu verleiten, den virtuellen Servern einfach ein paar mehr CPUs zuzuordnen, nach dem Motto “viel hilft viel, und wir haben’s ja”. Leider haben die letzten Jahre bei “echten”, also physischen Servern dazu geführt, dass die allermeisten Systeme hoffnungslos überdimensioniert waren. Solche Server verfügen über CPU und RAM im Überfluss, weil man ja schlicht keine Maschinen mit geringerer Ausstattung mehr bekam.

In der Virtualisierung wäre das aber ein Irrweg. Hier gilt die Devise “so wenig wie möglich”. Ein Server, der nicht mehr als eine CPU braucht, sollte also auch als VM nicht mehr als eine vCPU bekommen. Sonst steht man schnell vor dem Problem, dass man die Ressourcen des Hosts zu großzügig verteilt und damit unflexibel wird.

Mehrfach-CPUs in virtuellen Servern haben aber auch einen weiteren Nachteil: Eine VM mit vier vCPUs kann vom Hypervisor immer nur dann Rechenzeit erhalten, wenn gleichzeitig vier “echte” CPU-Cores frei sind (denn nur die echten CPUs können ja die Rechenarbeit erledigen). Hat der Admin zu großzügig verteilt und viele Server mit einer, zwei und vier vCPUs auf seinem Host gemischt, kann es bei hoher Auslastung durchaus sein, dass der Hypervisor nur selten vier CPU-Kerne gleichzeitig an eine VM zuteilen kann. Im Effekt wäre eine solche VM also “langsamer” als erwartet, weil ihre vier virtuellen CPUs ständig auf Rechenzeit warten, aber nur selten welche bekommen. Zwar tritt ein solches Phänomen nur in Grenzsituationen auf, aber dann ist es um so nachteiliger.

Rechnerisch vs. real

Diese Berechnungsgrundlagen gelten vor allem für produktive Systeme, für die ein verlässliches Leistungsniveau wichtig ist und für die der Support durch den Hersteller gewahrt bleiben muss. Es gibt keine “harte” Limitierung auf ein bestimmtes Verhältnis von virtuellen zu realen CPUs. In einem Testsystem wird man problemlos auch höhere Dichten als 8:1 hinbekommen. Nur endet eben der Microsoft-Support für VM-Server bei 8:1, weil die Praxis in anspruchsvollen Umgebungen zeigt, dass bei höherer Dichte allzu oft Engpässe auftreten. Für andere Virtualisierer gelten übrigens sehr ähnliche Berechnungsformeln.

Vorsicht auch: Bei bestimmten Applikationen kann es durchaus sein, dass der Applikationshersteller striktere Limitierungen setzt. Bevor man also seine Hosts zu voll packt, ist Planung und Recherche angesagt.

Mehr dazu:

[Ratio vCPU vs. LP mit SP1 erhöht – German Virtualization Blog – Site Home – TechNet Blogs]
http://blogs.technet.com/b/germanvirtualizationblog/archive/2011/01/12/ratio-vcpu-vs-lp-mit-sp1-erh-246-ht.aspx

[Requirements and Limits for Virtual Machines and Hyper-V in Windows Server 2008 R2]
http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx

[Hyper-V Terminology – Virtual PC Guy’s Blog – Site Home – MSDN Blogs]
http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/02/25/hyper-v-terminology.aspx

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!