hansdampf06
Goto Top

Server-RAM-Ausstattung

Hallochen Gemeinde,

hinsichtlich des RAM's eines Virtualisierungshosts stellen sich Fragen.

Kurze Situationsbeschreibung:
1. Der Host hat ein Dual-Socket-Board und beide CPU-Sockel sind mit demselben CPU-Mehrkern-Modell bestückt. Beide Sockel haben wie üblich dieselbe Anzahl an RAM-Bänken. Derzeit sind diese RAM-Bänke identisch mit denselben RAM-Modulen zur Hälfte befüllt. Insgesamt sind das X GB und je CPU-Sockel sind also X/2 bestückt.
2. Die aktuell aktiven VM's haben zusammen einen fest zugewiesenen RAM-Bedarf von knapp 0,8*X, so dass aktuell alles im grünen Bereich ist. Jedoch gibt es bestimmte Überlegungen für zusätzliche VM's, so das X (abzgl. des Speichers für den Host) nahezu ausgereizt oder gar überschritten werden würde. Somit ist an eine angemessene Erhöhung des RAM zu denken.

Fragestellungen:

1. Wie würde es sich auf die Gesamtperformance auswirken, wenn nur bei einer CPU die freien RAM-Bänke aufgefüllt werden würden? Wie ist das im Vergleich zu einer synchronen Aufrüstung für beide CPU's zu betrachten? Was wäre in diesem Zusammenhang außerdem unter Nachhaltigkeitsgesichtspunkten überlegenswert?

2. Wie ist eine synchrone / asynchrone Speicherausstattung bei zwei CPU's in Bezug auf die NUMA-Funktionalität zu betrachten? (Insbesondere mit Blick auf einen (derzeit noch) Hyper-V-Server?)

3. Was wäre im Übrigen Best Practice bei der Planung der RAM-Ausstattung des Hosts und der Dimensionierung der RAM-Zuweisung an die VM's? Welche Ableitungen sind hier gerade unter dem NUMA-Gesichtspunkt zu treffen?

Vielen Dank für Euren Input und noch einen schönen Ostermontag
HansDampf06

Content-Key: 6718838666

Url: https://administrator.de/contentid/6718838666

Printed on: April 28, 2024 at 14:04 o'clock

Member: em-pie
em-pie Apr 10, 2023 at 16:01:03 (UTC)
Goto Top
Moin,

Dass hier alle Welt immer so ein Geheimnis um die Hardware macht.
Als könnte man unter Angabe des Herstellers und Modells direkt auf das Unternehmen schließen, welches die Hardware einsetzt.

Zu deinen Fragen:
RTFM
Da du nichts zur CPU/ Mainboard sagst, wird es hier für uns schwer..

Ne Power10 Maschine reagiert mitunter anders, als ne Kiste auf Basis von Intel/ AMD. Und über das Alter deiner Hardware sagst du auch nichts, da es mitunter auch hier Unterschiede geben kann (nicht muss)…

Mein Tipp:
Halte alles gleich verteilt. In jedem Fall führt das zu weniger Problemen.
Und spare nicht am RAM. Lieber etwas mehr einkaufen, als in 1 Jahr noch mal nachlegen zu müssen…
Mitglied: 2423392070
2423392070 Apr 10, 2023 at 16:08:31 (UTC)
Goto Top
RAM sinkt und sinkt im Preis.
Das heißt ordentlich zu langen.
Member: Lochkartenstanzer
Lochkartenstanzer Apr 10, 2023 at 18:04:13 (UTC)
Goto Top
Moin,

mach einfach alle Bänke voll mit Maximum und gut ist.

lks
Member: Spirit-of-Eli
Spirit-of-Eli Apr 10, 2023 at 18:09:22 (UTC)
Goto Top
Bestück die Bänke nicht ungleich. Die meisten Boards können das nicht.

Ansonsten steht im Manual des Boards ja auch alles nötige drin.
Member: it-fraggle
it-fraggle Apr 11, 2023 at 05:28:22 (UTC)
Goto Top
Zu 1) Manche Boards können das gar nicht. Und warum sollte man das auch tun?
Zu 2) Ich würde mich nicht auf Funktionalitäten stützen, wenn ich mit ausreichend RAM dem Problem aus dem Weg gehen kann.
Zu 3) Best Practise ist ausreichend Speicher zu verbauen und dafür zu sorgen, dass Balance im System herrscht.
Member: DerMaddin
DerMaddin Apr 11, 2023 at 06:33:10 (UTC)
Goto Top
So ganz ohne die technischen Angaben zu Mainboard und CPU wird man hier keine passende Aussage treffen können. Unsere Server (AMD Epyc / Lenovo Mainboard) vertragen auch recht "wilde" Kombinationen von RDIMM-Kombinationen. Pro Sockel (zwei pro Mainboard) sind 16 DIMM-Slots verfügbar. Wir haben aber nur eine CPU drin und keine 16 RAM-Module sondern 12 Stück (32GB*12 = 384). Aber selbst wenn ich in zwei der vier leeren Bänke 64GB Module rein stecken würde, wäre das kein Problem da zwei Bänke ein Chanel bilden und so am Ende auf jedem Chanel 64GB enthalten sind.
Mitglied: 2423392070
2423392070 Apr 11, 2023 at 06:36:27 (UTC)
Goto Top
Es ist eben so, dass das schlechteste Duo das Thema regelt.
Die CPU kann nicht jeden Kanal separat timen, refreshen usw ...
Member: ukulele-7
ukulele-7 Apr 11, 2023 at 07:12:58 (UTC)
Goto Top
Abgesehen von dem was schon gesagt wurde:
Zitat von @HansDampf06:

1. Der Host hat ein Dual-Socket-Board und beide CPU-Sockel sind mit demselben CPU-Mehrkern-Modell bestückt.
Ich hoffe es sind auch die selben CPUs und nicht nur CPUs der selben Generation?

2. Die aktuell aktiven VM's haben zusammen einen fest zugewiesenen RAM-Bedarf [...]
Der RAM ist aber nicht einer VM exklusiv / fest zugeordnet sondern schon dynamisch oder? Der RAM kann überbelegt werden, es sollte aber idealer Weise zu jedem Zeitpunkt auch noch tatsächlich freier RAM zur Verfügung stehen.

Ansonsten siehe meine Vorposter. NUMA wird interessant wenn eine VM Kerne aus CPU A aber RAM aus CPU B benutzen muss. Das passiert nur wenn es sich nicht vermeiden lässt und sobald das passiert hast du eigentlich zu wenig RAM weil das grundsätzlich nicht optimal ist. Das ist natürlich automatisch der Fall wenn eine VM mehr als 50% des vorhandenen RAMs belegt oder mehr als 50% der CPU Kerne, das sollte man vermeiden. Aber auch hier kann man dir ohne konkrete Informationen über die Aufteilung nur diesen allgemeinen Rat geben: Halte die VMs selbst klein.
Member: clSchak
clSchak Apr 11, 2023 at 14:54:49 (UTC)
Goto Top
Hi

aktuellere Xeon CPU sind immer in 6er Gruppen gleicher RAM Bausteine (je 3 auf Bank A und 3 auf Bank B ) zu bestücken um die optimale Performance der CPU zu gewährleisten, das gilt jetzt explizit für Intel Xeon CPUs - ob das jetzt für die aktuellste Generation noch so gilt bin ich mir nicht sicher, da könnten es auch bereits 8 oder 12 sein.

Das Thema NUMA was @ukulele-7 anspricht ist nicht zu vernachlässigen, vor allem bei RAM Lastigen Anwendungen wie SQL, Exchange usw. muss das beachtet und in VMWare und ebenso im BIOS korrekt eingerichtet sein.

Falsche RAM Konfiguration kann zu einem deutlichen Performance-Verlust führen, mit einer Vollbestückung gleicher RAM-Bausteine macht man nie etwas verkehrt, erst wenn man eine Teilbestückung durchführt muss man darauf achten, welche Slot mit welchen Modulen bestückt werden.

Siehe auch:
https://dl.dell.com/manuals/common/balancing_memory_xeon_2nd_gen.pdf
https://www.wwt.com/article/memory-population-guidelines-for-intel-3rd-g ...
https://www.advancedhpc.com/blogs/adams-blog/memory-configuration-and-pe ...
https://www.intel.com/content/www/us/en/support/articles/000038750/serve ...

Gruß
@clSchak
Member: ukulele-7
ukulele-7 Apr 11, 2023 at 15:20:48 (UTC)
Goto Top
NUMA hat er selbst schon angesprochen. Ich hatte noch nie Probleme mit NUMA und habe da auch nie etwas "konfigurieren" müssen/können aber bei ausreichend RAM / Kernen bzw. "nicht zu großen" VMs sollte der Hypervisor automatisch die Ressourcen optimal zuweisen.

Es ist auch generell keine gute Idee eine große VM, die das System oder auch nur eine CPU zu einen großen Teil oder vollständig allein auslastet, zu betreiben. Da kommt dann auch CPU Overprovisioning zur Geltung. vCPU am besten möglichst nur nach Bedarf auf die VMs zuweisen. vRAM kann überbucht werden sofern der tatsächlich genutzte RAM nicht den pRAM schon auslastet. Wenn eine VM mehr als 50% der Kerne einer deiner pCPU nutzen soll oder mehr als 25% des pRAMs an einer pCPU dann empfehle ich dir einen anderen Weg zu suchen, z.B. in dem du den Workload aufteilst. Ich sage nicht das das grundsätzlich nicht geht aber man sollte sich dann genau mit den Effekten befassen die auftreten können um das zu verstehen. Bei CPU wäre dafür esxtop gut (ESXi vorausgesetzt):
https://www.yellow-bricks.com/esxtop/
Mit RAM und NUMA habe ich mich selbst noch nicht sehr intensiv in der Theorie befasst, eventuell kann man da auch mit esxtop was machen.
Member: HansDampf06
HansDampf06 Apr 14, 2023 at 09:52:50 (UTC)
Goto Top
Zitat von @em-pie:
Dass hier alle Welt immer so ein Geheimnis um die Hardware macht.
Mir geht es bei meiner Fragestellung gerade nicht um die konkrete Hardware, sondern vielmehr um den theoretischen Hintergrund, um mein Wissen und Verständnis zu erweitern. Die aktuelle Hardware mag zwar ein auslösender Anlass sein, aber sie ist für meine Fragestellung belanglos. Denn möglicherweise wird diese Hardware ausgetauscht und dann stellen sich je nach RAM-Bedarf dennoch wieder dieselben Fragen, und zwar schon bei der Planung, wie die neue Hardware konfiguriert sein soll.

Demgemäß freue ich mich vor allem über die Antworten von @it-fraggle, @DerMaddin, @2423392070, @ukulele-7 und @clSchak, weil das genau die Antworten sind, die ich erhofft habe.

Und das passt zudem zu etwas, was ich gestern in einem anderen Zusammenhang (Ausstattung einer SQL-Server-VM mit vCPU und RAM) las: NUMA wird dann bedeutsam, wenn einer VM mehr vCPU's zugewiesen werden, als an pCPU's an einem physischen NUMA-Knoten vorhanden sind. In Kombination mit den wertvollen Ausführungen von @ukulele-7 zur Begrenzung von vCPU und vRAM für eine VM nach oben im Verhältnis zu den insgesamt vorhandenen Ressourcen ermöglicht das für mich eine noch gezieltere Planung und Konfiguration der VM's und ist somit sehr wertvoll.

2. Die aktuell aktiven VM's haben zusammen einen fest zugewiesenen RAM-Bedarf [...]
Der RAM ist aber nicht einer VM exklusiv / fest zugeordnet sondern schon dynamisch oder? Der RAM kann überbelegt werden, es sollte aber idealer Weise zu jedem Zeitpunkt auch noch tatsächlich freier RAM zur Verfügung stehen.
Mit "fest zugewiesen" meine ich selbstverständlich, dass bei allen VM's die jeweilige Startzuweisung zugleich auch die Minimal-/Maximalzuweisung von RAM darstellt - dynamischer RAM wird nicht verwendet (= deaktiviert im Hyper-V-Einstellungen der VM). Das bedeutet in der Praxis, eine VM bekommt bei ihrer Ersteinrichtung eine RAM-Menge zugewiesen, die den bisherigen Erfahrungswerten für die zu erledigenden Aufgaben entspricht. Bei allen Linux-VM's läuft eine regelmäßige Protokollierung der Speichernutzung (mittels free und cat /proc/loadavg (ergänzend htop zur punktuellen Verlaufsanalyse)), um anhand dessen nachjustieren zu können. Das betrifft sowohl die vCPU- als auch die RAM-Zuweisungen. Bei Windows ist der Ressourcenmonitor hilfreich, weil dort anhand der verfolgbaren Verlaufsdaten die bestehenden Bedarfe der verschiedenen Prozesse ganz gut sichtbar werden, um angemessene Schlussfolgerungen ziehen zu können. Eine Überbelegung von RAM gibt es daher bei mir nicht - für alle ständig aktiven VM's ist die RAM-Zuweisung jederzeit im vollen Umfang gesichert. Der verbleibende nicht zugewiesene RAM steht dann für solche VM's zur Verfügung, die nur gelegentlich / bei Bedarf verwendet werden; nach der Benutzung werden diese VM's auch wieder heruntergefahren.

Derzeit ist es sogar so, dass die Summe aller vCPU-Zuweisungen um eins kleiner ist als die Anzahl der vorhandenen pCPU's. Das werde ich künftig nicht durchhalten können, weil noch zwei oder drei ständig aktive VM's hinzukommen werden ...

Insgesamt sehe ich nämlich in der Vermeidung dynamischer Zuweisungen eine Leistungs- und Verbrauchsoptimierung und das mit messbarer Wirkung.

Das alles mag ein äußerst konservativer Konfigurationsansatz sein. Aber dafür muss ich mich garantiert nicht mit schwer lokalisierbaren Eventualitäten aufgrund dynamischer Zuweisungen herumschlagen. Ganz im Gegenteil ist mein administrativer Aufwand auf das kleinstmögliche Maß reduziert und die VM's verrichten klaglos ihren Dienst.

Viele Grüße
HansDampf06