Der Citrix™ XenServer bietet umfangreiche Kommandos zum Anpassen der CPU Leistung für einzelne virtuelle Maschinen. Leider sind diese nicht sehr ausführlich dokumentiert. Dieser Beitrag erklärt welche Tuningmaßnahmen es gibt, welche Befehle dafür zuständig sind und was damit bewirkt wird.
In einer standardmäßigen XenServer Installation werden physische CPUs den virtuelle CPUs der virtuellen maschinen über einen „fair-share“ Algorithmus zur Verfügung gestellt. Dieser Algorithmus funktioniert wie klassisches Loadbalancing und verschiebt virtuelle CPUs auf physischen Kernen um die beste Performance zu erreichen. In manchen Fällen ist es erforderlich diesen Mechanismus etwas zu konfigurieren. Wie der XenServer, nehmen wir mal eine Maschine mit zwei Dual-Core CPUs und Hyperthreading, die einzelnen CPUs nummeriert ist im folgenden Diagramm ersichtlich.
Beim „pinning“ von virtuellen CPUs werden die vCPUs von virtuellen Maschinen auf bestimmte Ressourcen festgelegt und somit der Loadbalancing Algorithmus beeinflusst.
xe vm-param-set uuid=<VM UUID> VCPUs-params:mask=2,4,6
Mit dem vorstehenden Kommando bekommt die virtuelle Maschine nur die physischen Ressourcen 2, 4 und 6.
Mit der vCPU Priorität kann einer virtuellen Maschine mehr oder weniger Prozessorzeit als anderen Maschinen zugeordnet werden.
xe vm-param-set uuid=<VM UUID> VCPUs-params:weight=1024
Die dem vorstehenden Kommando bekommt die virtuelle Maschine 4-mal mehr Prozessorzeit als eine normale VM. Gültige Werte gehen von 1 bis 65535, Standard ist 256.
Mit vCPU Cap kann letztendlich konfiguriert werden, wie viel CPU Leistung eine virtuelle Maschine bekommt.
xe vm-param-set uuid=<VM UUID> VCPUs-params:cap=75
Mit dem vorstehenden Kommando bekommt die virtuelle Maschine nur 75% eines Prozessors, auch dann wenn dieser zur Zeit keine Last hat. Gültige Werte sind 100 = eine CPU, 50 = eine halbe CPU, 400 = 4 CPUs und so weiter. Der Standardwert ist 0 und bedeutet, dass es nach oben keine Grenze gibt.
Wie diese Werte eingesetzt werden, muss von Fall zu Fall entschieden werden.