In der aktuellen Konfiguration habe ich den VMs neu folgende Zuteilung gegeben:
32 VM mit 4 vCPU (CPU Limit 3)
24 VMs mit 6 vCPU (CPU Limit 5)
12 VMs mit 8 vCPU (CPU Limit 7)
-------------------------------
Somit Total 368 vCPU. Gerechnet mit der von Dunuin genannten Formel: 368 vCPU / 60 vCPUs mit je 100% Auslastung = 16.3% CPU-Auslastung (noch ohne Limit). So sollten keine Leistungseinbussen entstehen und mit CPU Limit sogar noch etwas Luft nach oben sein, falls einige VMs dann kurzzeitig doch mehr Leistung beziehen.
Hi, das war recht vereinfacht dargestellt. Leider ist das Thema CPU Scheduler bei der Virtualisiserung etwas komplexer.
Bevor ich alles erkläre, erst mal allgemeingültige Empfehlungen für sizings ohne Leistungseinbußen:
- 1vCPU VMs vCPU/CPU 4:1
- 2vCPU VMs vCPU/CPU 2,5:1
- 4vCPU VMs vCPU/CPU 1,6:1
Das ganze kann man natürlich noch etwas aufweichen, wenn die CPU sehr viele Kerne hat und man mit gewissen Performanceeinbußen leben kann.
Normalerweise male ich das immer auf zum erklären, ich hoffe man versteht es auch so.
Zum vorstellen ein ganz simples Setup 1CPU mit 4 Kernen und 4 VMs, 2x 2vCPU, 2x 1vCPU
Der Server hat jetzt 4 Kerne zur Verfügung, jede VM benötigt für jede kleinste Berechnung immer die eingestelle vCPU Anzahl an physikalischen Kernen.
Es rechnet eine 2vCPU VM und eine 1vCPU VM, dann kommt die zweite 2vCPU VM und landet in der Warteschlange, da nur 1 Kern frei ist.
eine Nanosekunde später kommt die zweite 1vCPU VM und könnte ja theoretisch den freinen Kern nutzen. aber die landet hinter der 2vCPU VM in der Warteschlange, da die Anfrage ja etwas später kam. Die cpu Last spielt dabei keine Rolle, wenn die VMs nur minimale Berechnungen machen.
Jetzt hast du ein einfaches Beispiel wie Warteschlangen auf der CPU entstehen. Umso mehr vCPUs eine VM hat, umso eher entstehen Warteschlangen. Wenn du viele 8vCPU VMs auf einen 64Core Epyc loslässt, bekommst du deutlich bessere Werte als wenn du 2 Server mit je 2x 16 Core hast. Eine CPU mit vielen Kernen kann da ganz anders skalieren.
Ich haben Kunden auf einen 2 Knoten Cluster migriert (je 1x 64Core). Wenn dann ein Server aus ist und alles auf einer Maschine läuft, sind die Latenzen immer noch deutlich besser als vorher, bei 5 Servern mit je 20 Kernen.
Hperthreading kann man ja auch noch mit einem Faktor von ca. 1:1,6 einkalkulieren.
Wie du siehst ist so ein Sizing doch komplexer als viele denken. Es gibt sehr viele Variablen zu beachten.
Jetzt zu deinen VDIs. Ich nehme mal als Beispiel einen Kunden aus dem Fahrzeugbau mit recht komplexen 3D Modellen. Die CAD VDIs haben fast alle 4vCPUs, ein paar weinge Leute Weltweit haben 5-6 vCPUs. Prüfe mal ob deine VMs tatsächlich so viele Kerne benötigen.
Mit Limits arbeiten würde ich gar nicht, da du durch das Sizing mit vielen VCPUs künstlich ausbremst und das Limit vermutlich nie zum Tragen kommt.
Wenn ein CAD User sich wegen der Performance beschwert, hat der bestimmt nix dagegen, das seine Maschine einen Reboot machen muss wenn er mehr Performance benötigt, die er dann direkt bekommt.
Gruß Falk