Virtuelle CPUs (vCPU) für VMs unter VMware und Hyper-V konfigurieren

    Hyper-VDie Zuteilung von Hardware-Ressourcen zu virtuellen Maschinen ist eine knifflige Aufgabe, die darüber entscheidet, wie gut ein Server ausgelastet werden kann. Im Fall der Prozessorleistung kommt hinzu, dass der Zusammenhang zwischen physikalischen Prozessoren, Cores und einer vCPU nicht ganz leicht zu durchschauen ist. Microsoft und VMware bieten unterschiedliche Optionen, um einer VM Rechenleistung zuzuteilen.

    Ein wesentliches Anliegen von Virtualisierung war es von Anfang an, die zumeist gering ausgelasteten Server auf weniger Maschinen zu konsolidieren und deren Ressourcen besser auszunutzen. Bei der relativ hohen VM-Dichte auf moderner Hardware, wo 50 oder 60 virtuelle Maschinen pro Host normal sind, ist es jedoch nicht einfach, die VMs so zu dimensionieren, dass die Hardware weder unter- noch überfordert ist.

    Tools für Capacity Management

    In größeren Umgebungen wird man daher kaum zu Excel greifen, um die optimale Auslastung eines Hosts zu ermitteln. Gefragt sind hier vielmehr Tools für Kapazitätsmanagement, die den Administrator bei der Planung helfen und ihn während der Laufzeit von VMs über eine zu knappe oder zu üppige Ausstattung mit Ressourcen benachrichtigen. Für kleinere Umgebungen helfen oft schon kostenlose Werkzeuge wie VM Monitor von SolarWinds oder Veeam One Free Edition.

    Trotz aller Tools muss man beim Einrichten einer VM eine Vorstellung davon haben, welche Systemanforderung die darin ausgeführten Anwendungen haben. Die Angaben der Hersteller beziehen sich fast immer auf die Voraussetzungen für physikalische Systeme, die man dann in die virtuelle Welt übertragen muss. Microsoft empfiehlt in einem nicht mehr ganz neuen Dokument am Beispiel Biztalk Server, in virtuellen Umgebungen 110% bis 125% der angegebenen Systemvoraussetzungen bereitzustellen.

    Berechnung logischer Prozessoren

    Die Abbildung von physikalischen auf virtuelle CPUs ist nicht ganz einfach, weil eine vCPU nicht einem Prozessor entspricht und weil es möglich ist, die physikalisch vorhandenen Rechenkapazitäten zu überbuchen. Sowohl bei VMware als auch bei Hyper-V entspricht ein logischer Prozessor einem Core. Unterstützt der Chip Hyperthreading, dann ist eine noch feinere Aufteilung der Rechenkapazität möglich, so dass jeder Core 2 logische CPUs repräsentieren kann.

    Eine Maschine mit 2 Sockeln, die jeweils mit einer Hyperthread-fähigen Quad-Core-CPU ausgestattet sind, könnte demnach 2 * 4 * 2, also 16 logische Prozessoren bereitstellen.

    Wie viele vCPUs auf einen logischen Prozessor?

    Die entscheidende Frage für die Auslastung eines Hosts besteht darin, wie viele vCPUs alle aktiven VMs in der Summe auf die logischen Prozessoren abbilden können. Microsoft gibt dafür einen Wert von 8:1 an, ausgenommen in den VMs läuft nur Windows 7, dann ist auch ein Verhältnis von 12:1 zulässig.

    Um beim obigen Beispiel zu bleiben, dürfen demnach allen VMs zusammen maximal 16 * 8, also 128 vCPUs zugeteilt werden. Die tatsächlich realisierbare Zahl hängt natürlich stark von den Anforderungen der jeweiligen Workloads ab.

    Manuelle Grenzwerte für die Rechenleistung unter Hyper-V

    Bei der Konfiguration von VM bieten VMware und Microsoft neben der einfachen Zuteilung von vCPUs zusätzliche Optionen an. Im Hyper-V Manager besteht die Möglichkeit, für eine bestimmte VM ein Minimum an Rechenleistung zu reservieren. Das Tool rechnet anhand der Zahl aller VMs auf einem Host aus, wie viel diese Reserve an den gesamten Ressourcen der Hardware ausmacht. Dabei nimmt es keine Rücksicht darauf, ob alle VMs eingeschaltet oder einige von ihnen heruntergefahren sind.

    Im Hyper-V Manager kann man Ober- und Untergrenzen für die verfügbare Rechenleistung einer VM festlegen.

    Klar ist jedoch, dass sich diese Einstellung auf die mögliche VM-Dichte des Hosts negativ auswirken kann, weil es dem System weniger Flexibilität bei der Zuteilung von Ressourcen gewährt. Neben einer solchen Unter- lässt sich auch eine Obergrenze für die einer VM verfügbare Rechenleistung definieren.

    Priorisierung von virtuellen Maschinen

    Als Alternative zu einer statischen Festlegung von minimal und maximal verfügbarer Prozessorkapazität kann man die VMs gewichten, so dass sie gegenüber anderen Workloads priorisiert oder zurückgestuft werden. Für das Feld Relative Gewichtung sind Werte zwischen 1 und 10000 zulässig. Für die Berechnung der CPU-Leistung, die einer VM zusteht, addiert Hyper-V die Gewichte aller VMs und teilt sie durch den Wert für die jeweilige VM.

    CPU Affinity bei VMware

    VMware bietet ebenfalls Möglichkeiten zur manuellen Justierung von Rechenleistung, jedoch nicht in Form von Grenzwerten. Im vSphere Client kann dafür über die so genannte CPU Affinity den VMs bestimmte logische Prozessoren zuordnen, also abhängig von der Hardware ausgewählte Cores oder Threads.

    Über die CPU Affinity kann man eine VM im vSphere Client fest bestimmten logischen Prozessoren zuordnen.

    Damit stellt man sicher, dass die Workloads der betroffenen VMs nur dort verarbeitet werden. Wie bei anderen Formen des manuellen Eingriffs muss man auch hier wissen, was man tut, um nicht die Performance des Systems negativ zu beeinflussen.

    vCPU mit virtuellen Cores

    VMware erlaubt es, vCPUs mit mehreren Kernen zu definieren. Sowohl im vSphere Client als auch in der Workstation kann man in den Einstellungen einer VM neben der Zahl der vCPUs gleich auswählen, wie viele virtuelle Cores sie haben soll. Voraussetzung dafür ist mindestens die Hardware Version 7.

    Anstatt einer VM eine größere Zahl von vCPUs zuzuteilen, kann man eine kleinere Zahl mit mehreren Kernen ausstatten.

    Der Vorteil dieses Features besteht darin, dass es VMs mehr Rechenleistung auch dann zuteilen kann, wenn etwa ein (älteres) Gastbetriebssystem auf eine bestimmte Anzahl von Sockeln beschränkt ist.

    Eine weitere Anwendung von virtuellen Cores gibt es, wenn die Lizenzierung einer Software pro CPU erfolgt, so dass man ihr mehr Leistung zukommen lassen kann, ohne gegen die Lizenzbedingungen zu verstoßen. Die Multi-Core-Option hilft jedoch nichts, falls die Lizenzen wie so oft an die vorhandenen physikalischen Sockets gebunden sind.

    Keine Kommentare