CPU - Überbuchung - Overcommit

In allen Virtualisierung Projekten taucht immer wieder die gleiche Frage auf,  wie verteilt man die virtuellen Ressourcen optimal, wie viele virtuelle Maschinen können auf einen einzigen Host performant laufen? Die einzige richtige Antwort auf diese Fragen, es kommt drauf an. Es gibt viele Faktoren, die eine wichtige Rolle dabei spielen.

Als erstes erläutern wir die grundlegende Begriffe: Prozessor, Core, HyperThreading, Logischer Prozessor und vCPU

CPU One Core

1. Ein Prozessor oder CPU (Central Processing Unit) ist eigentlich das, was in einen Socket auf einem Mainboard reingesteckt wird. Mehr dazu auf Wiki
Ja nach Geräteart, kann es einen Prozessor (Smartphone, Tablet-PC, Laptop) oder mehrere (Server, Workstation) Prozessoren eingesetzt werden.  Ein Prozessor ist immer eine physische CPU.

2. Core -  Die kontinuierliche Weiterentwicklung der Fertigungstechnologie hat es möglich gemacht, dass die Prozessoren bzw. Transistoren  immer kleiner wurden, sodass auf einem CPU Multi CoreChip mehrere Prozessoren verbaut werden. Ein Core ist ein physischer Prozessor, kein Teil von einem Prozessor.

3. Hyper-Threading ist eine Technologie, die die Duplizierung  von bestimmten Komponenten (Registersätzen) ermöglicht, wobei die ALUs (Arithmetisch-logische Einheiten) einzeln bleiben. Das bedeutet, dass zu einem bestimmten Zeitpunkt nur ein Thread die Rechenoperation ausführen kann. Die Hyper-Threading-CPUs sind eigentlich logische CPUs

Beispiel der HyperTreading Technologie:

Intel i7 01

4. Logischer Prozessor ist einer von oben genannten Punkten. Die CPUs, die das Betriebssystem sieht, sind die logischen Prozessoren.

Für die Vereinfachung benennen wir die beschriebenen wie folgt:
X - ist die Anzahl der CPU
Y - ist die Anzahl der Core pro  CPU
Z - ist die Anzahl von Hyper-Threads
S - ist die Summe der logischen Prozessoren. S = (X x Y) x 2 (Hyper-Threads)

5. vCPU - ist ein CPU innerhalb einer VM


Verhältnis vCPU zu physischer CPU

Eine CPU-Überbuchung  ist die Aufteilung von logischen CPUs  in die virtuelle CPUs. z.B. CPU-Überbuchungsverhältnis 5:1 bedeutet, dass die fünf vCPUs einem logischen CPU zugewiesen werden.

So werden die Anzahl der verfügbaren physischen Kerne (pCPU) berechnet:
(Anzahl Prozessorsockel) X (Anzahl Kerne/Prozessor) = Anzahl Physische Prozessoren (pCPU)

Die Berechnung von Hyper-Threading-CPUs wird  oft heftig diskutiert. Es gibt zwei unterschiedliche Meinungen zu dem Thema.

1. Es wird es empfohlen, die Hyper-Threaded CPUs bei der Berechnung zu ignorieren.
Beispiel: ein Host mit zwei Octa-Core-Prozessoren hat 16 physischer CPU. (2 x 8 = 16)

2. Die Hyper-Threads werden bei der Berechnung als vollwertige CPUs gesehen.
Beispiel: ein Host mit zwei Octa-Core-Prozessoren mit eingeschalteter Hyper-Threading-Technologie hat 32 logischer CPUs. (2 x 8) x 2  = 32

Welches Verhältnis ist wirklich optimal lässt sich nicht pauschal beantworten und ist von dem Workload abhängig.  Sicherlich wird Verhältnis bei einem gehosteten Datenbank / Exchange oder Skype-Server anders sein (2:1), als bei einer Desktop-Virtualisierung (6:1 oder höher).

Pauschalisiert hat sich ein Verhältnis 4:1 mittlerweile als Best Practice erwiesen.

Die Leistung bei Windows-Betriebssystemen steigt nicht linear. Mehr vCPU kann auch negative Auswirkung haben. Wenn Sie z.B. einer VM vier vCPU zuweisen, werden für diese virtuelle Maschine bei CPU Zyklen auch vier Core zur Verfügung gestellt, auch dann wenn nur zwei davon benötigt werden. Fazit: Weisen einer virtuellen Maschine so viele vCPU zu, die diese VM wirklich braucht.

 

Faustregeln des Citrix Consulting Services

Wenn Sie mutig genug sind, können Sie die pauschalierten Werte des Citrix Consulting Services verwenden,  sogenannte Rule of 5 and 10 

Die Regeln sind einfach:

Eine detalierte Beschreibung finden Sie in diesem Blogbeitrag von Nich Rintalan: Citrix Scalability — The Rule of 5 and 10

 

Metriken-Überwachung

Die Überwachung der folgenden Metriken kann bei der Einschätzung den realen CPU-, Memory-Bedarf helfen:

Hypervisor:

 VDA / User Session

 

Ein paar Tipps zum Thema:

Performance Tuning Guidelines for Windows Server 2012 R2

Best Practices for Oversubscription of CPU, Memory and Storage in vSphere Virtual Environments

“New” Citrix Best Practices 2.0 von Nick Rintalan

XenApp Scalability v2015, Part 1