Woody - Fotolia
Wie findet man die richtige vCPU-Zuweisung für VMs?
Per Hyper-Threading kann ein physischer Prozessor mehrere virtuelle CPUs bereitstellen. Aber wie findet man die richtige Anzahl an vCPUs für virtuelle Maschinen?
Auch wenn es sehr einfach ist, virtuellen Maschinen virtuelle CPUs (vCPU) zuzuweisen, stellt sich sehr häufig die Frage, wie man die richtige Menge an vCPU-Ressourcen findet. Die Antwort hängt fast ausschließlich von der Anwendung und den Rechenanforderungen ab.
Eine virtuelle Maschine, die alltägliche Workloads ausführt, wird in den allermeisten Fällen mit nur einer vCPU auskommen. Tatsächlich benötigen die meisten einfachen Workloads, etwa ein DNS-Server, noch nicht einmal die kompletten Ressourcen einer vCPU. Genau auf dieser Tatsache baut die Möglichkeit auf, CPU-Ressourcen auf mehrere Workloads zu verteilen, was über eine zweite Instruktions-Pipeline erfolgt und von Intel Hyper-Threading genannt wird.
Natürlich ist es aber auch möglich, einer virtuellen Maschine mehr als nur eine vCPU zuzuweisen. Dies ist vor allem dann sinnvoll, wenn die darauf ausgeführten Workloads anspruchsvoller sind, etwa bei einem Datenbank- oder E-Mail-Server. In den meisten Fällen dürften zwei oder vielleicht auch vier vCPUs ausreichen, um auch höheren Ressourcenanforderungen gerecht zu werden. Hypervisoren wie vSphere 6 können aber zum Beispiel bis zu 128 vCPUs auf einer virtuellen Maschine vereinen.
Der Trick beim vCPU-Provisioning besteht nun darin, genügend virtuelle Prozessoren zur Verfügung zu stellen, dabei aber keine Ressourcen zu verschwenden. Als einfache Regel kann man dabei so viele vCPUs zuweisen, wie sie die Systemvoraussetzungen für die Installation auf physischer Hardware vorsehen würden. Wenn eine Anwendung also vier physische CPUs voraussetzt, sollte man der virtuellen Maschine auch vier vCPUs zuweisen. Diese Regel ist meist eine gute Ausgangsbasis für weitere Anpassungen.
Dabei sollte man aber vorsichtig damit sein, vCPUs des gleichen physischen CPU-Kerns zuzuweisen. Hyper-Threading bietet zwar eine zweite Instruktions-Pipeline, teilt sich dabei aber natürlich das gleiche interne Subsystem. Die Leistung wird mit Hyper-Threading keinesfalls verdoppelt, auch wenn ein Hyper-Thread-Prozessor wie zwei CPUs aussehen mag, hat man natürlich nicht einfach zwei hoch-performante Prozessoren zur Verfügung. Ein rechenintensiver Workload profitiert daher vor allem davon, dass ihm zwei vCPUs unterschiedlicher physischer CPUs zugewiesen werden.
Man denke an einen Server mit Dual-Core-CPU und Hyper-Threading. Damit lassen sich vier vCPUs bereitstellen, also CPU 0 und CPU 1 auf dem ersten Kern und CPU 2 und CPU 3 auf dem zweiten Kern. Wenn ein Workload einer virtuellen Maschine zwei CPUs benötigt, und CPU 0 sowie CPU 1 erhält, dann basieren beide vCPUs letztlich auf dem gleichen physischen CPU-Kern. Damit dürften die CPU-Ressourcen ziemlich sicher nicht ausreichen, um den Workload zufriedenstellend ausführen zu können.
Anstatt dem Workload CPU 0 und CPU 1 zuzuweisen, sollte ihm lieber CPU 0 und CPU 2 zugewiesen werden, womit zwei unterschiedliche physische Kerne im Spiel sind. Die übrigen vCPUs, also CPU 1 und CPU 3, können für weniger anspruchsvolle Workloads genutzt werden. Diese Zuweisung ganz bestimmter vCPUs an virtuelle Maschinen kann über Affinitätsregeln definiert werden.
Glücklicherweise lässt sich die Anzahl virtueller Prozessoren mittlerweile leicht ändern, ohne hierfür die virtuelle Maschine neu erstellen zu müssen. Administratoren können die Anzahl zugewiesener vCPUs ändern, wenn die entsprechende virtuelle Maschine ausgeschaltet ist. Neuere Technologien ermöglichen dabei sogar das Ändern der vCPU-Anzahl im laufenden Betrieb.
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!