
Unsere IT hat eine VM mit 2 zugewiesenen CPUs erstellt, statt der von mir angeforderten 4. Ihr Grund ist, dass die VM mit 2 CPUs besser funktioniert als mit 4 (laut ihnen). Der Grund dafür ist, dass der VM-Hypervisor (in diesem Fall VMWare) wartet, bis alle CPUs verfügbar sind, bevor er eine davon aktiviert. Daher dauert es länger, auf 4 als auf 2 CPUs zu warten.
Ist diese Aussage sinnvoll?
Antwort1
Dies traf früher einmal zu, trifft heute jedoch nicht mehr ausschließlich zu.
Sie meinen damitStrikte gemeinsame Terminplanung.
Am wichtigsten ist jedoch, dass beim strengen Co-Scheduling-Algorithmus die Existenz einer verzögerten vCPU dazu führt, dass die gesamte virtuelle Maschine mitgestoppt wird. Beim entspannten Co-Scheduling-Algorithmus entscheidet eine führende vCPU, ob sie sich selbst mitgestoppt werden soll, basierend auf der Abweichung gegenüber der langsamsten Schwester-vCPU.
Jetzt,WennDer Host hat nur 4 Threads, dann wäre es dumm, sie alle zuzuweisen.WennEs hat zwei Prozessoren und 4 Threads pro Prozessor, dannkönnteSie möchten nicht den gesamten Inhalt eines einzelnen Prozessors zuordnen, da Ihr Hypervisor versuchen sollte, vCPUs auf demselben NUMA-Knoten zu behalten, um den Speicherzugriff zu beschleunigen, und Sie erschweren diese Aufgabe, wenn Sie einer einzelnen VM einen ganzen Socket zuordnen (siehe Seite 12 des oben stehenden PDF).
Es gibt also Szenarien, in denen weniger vCPUsdürfenbessere Leistung als mehr, aber das trifft nicht immer zu.
Alles in allem weise ich sehr selten mehr als 3 vCPUs pro Gast zu. Jeder bekommt standardmäßig 2, 3 bei hoher Arbeitslast und 4 für Dinge wie SQL-Server oder VMs mit wirklich hoher Stapelverarbeitung oder einen Terminalserver mit vielen Benutzern.
Antwort2
Dies hängt weitgehend vom zugrunde liegenden Hypervisor und den Administratoren ab, die ihn betreiben. Lassen Sie es mich erklären:
- Es ist eine schlechte Praxis, Ihnen einfach willkürlich 4 CPUs zu geben, nur weil Sie es angefordert haben. Im AllgemeinendenkenSie benötigen 4; die Ressourcenüberwachung besagt jedoch, dass Sie nur 1 benötigen.
- VMware ESXi zum Beispielerfordert das Sperren aller pCPUs, wenn eine vCPU eine Anforderung für CPU-Ressourcen stellt; daher ist es auf diesem Hypervisor schlecht für die Leistung. KVM führt keine Sperren durch wie ESXi; es verwendet den zugrunde liegenden Kernel-Scheduler, kann aber auf lange Sicht dennoch zu CPU-Konflikten führen.
- Wenn Sie Systeme von Anfang an mit 4 CPUs bauen, skalieren Sie nicht wirklich nach außen, sondern nach oben (was insbesondere bei VMs eine schlechte Praxis ist). Sie sollten vielleicht überprüfen, wie Sie die Architektur dessen, woran Sie gerade arbeiten, gestalten, damit sie so gebaut werden kann, dass sie auf die modernen Cloud-Infrastrukturen von heute skaliert werden kann.
Was können Sie daraus lernen? Erstellen Sie VMs immer mit minimalen Ressourcen und erhöhen Sie diese nach Bedarf. Skalieren Sie immer nach außen statt nach oben, und Sie können Ihre App überall ausführen.
Aufgrund der Sperren, die beim Hypervisor auftreten können, ist es tatsächlich so, dass 2 CPUs schneller sein können als 4 CPUs.
Antwort3
Ja, die Aussage ist im Allgemeinen sinnvoll. Sie sollten dies jedoch für Ihre genaue Konfiguration und Arbeitslast testen. Manchmal sind mehr CPUs besser, wenn Sie sie tatsächlich nutzen können. Wenn Sie jedoch nicht so viel Parallelität haben, ist die Leistung einer VM mit weniger CPUs oft etwas besser, da sie Verlangsamungen aufgrund von CPU-Ready-State-Pausen vermeidet.
Ich habe die vCPUs auf einigen unserer VMs reduziert und konnte bei den meisten eine Verbesserung des Durchsatzes feststellen. Bei einigen wenigen wurde es schlechter und die vCPU-Anzahl musste erhöht werden.