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:

  • Anzahl der physischen Kerne * 5 = Anzahl der XenDesktop-VMs
  • Anzahl der physischen Kerne * 10 = Anzahl der User Sessions eines XenApp Servers.

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:

  • vCPU Usage (Auslastung) (%)
  • CPU Queue Length (Warteschlangenlänge)
  • CPU Ready Time
  • CPU Readiness
  • vCPU/pCPU Ratio
  • Memory Utilization (Used/Free) (%)
  • Memory Swapping (Used/Free) (%)
  • Memory Ballooning (Used/Free)  (%)

 VDA / User Session

  • vCPU Usage (Auslastung) (%)
  • vCPU Usage pro Applikation (%)
  • vCPU Usage pro User (%)
  • Memory Utilization (Used/Free) (%)
  • Memory Utilization pro User (Used/Free) (%)
  • Memory Swapping (Used/Free) (%)

 

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

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.