Verteilung von Kernen

cklahn

Member
Jan 3, 2024
39
2
13
Hallo Forum,

wenn ein physischer Server zwei CPUs mit jeweils 12 Kernen hat, dann werden diese als 48 Kerne in PVE angezeigt. Soweit so gut. Wenn es jetzt um die Verteilung der Cores in den VMs geht, was ist besser:

Einer VM beispielsweise 1x8 Cores geben oder lieber 2x4 Cores? Bei VMware habe ich mal gelernt, dass immer 1 Socket angenommen werden sollte, auch wenn der Host zwei CPUs hatte. Warum weiss ich nicht. Ist das bei PVE auch so? Ansonsten frage ich mich, warum man dann 1 oder 2 Sockets einstellen kann...
 
Bei VMware habe ich mal gelernt, dass immer 1 Socket angenommen werden sollte, auch wenn der Host zwei CPUs hatte. Warum weiss ich nicht.
Zwei Hauptgründe: Performance und Softwarelizenzen.

Wenn die CPU-Kerne auf zwei physische CPUs verteilt sind, kann es zu Performanceeinbussen kommen, da die Verbindung (Interconnect) zwischen den beiden CPUs zum limitierenden Faktor werden kann. Ich bin kein Experte, aber es hängt dabei stark von der jeweiligen Plattformgeneration ab, wie stark sich das tatsächlich auswirkt. Bei neueren Generationen und aktuellen Plattformen ist der Unterschied bei korrekter Konfiguration wohl oft vernachlässigbar.

Ein weiterer, und heutzutage wohl der Hauptgrund, sind Softwarelizenzen. Kommerzielle Produkte werden häufig nach der Anzahl der CPU-Sockets lizenziert. Das bedeutet, dass du mehr bezahlen musst, wenn die VM zwei CPU-Sockets nutzt. In vielen Fällen ist daher eine einzelne CPU mit vielen Kernen günstiger als zwei kleinere CPUs.

Ist das bei PVE auch so?
Ja, denn bei ersterem handelt es sich primär um Hardwarelimitationen, während es sich bei letzterem um künstliche Limitationen handelt, die in erster Linie der Gewinnoptimierung der Softwarehersteller dienen. Beides kann der Hypervisor nur sehr bedingt beeinflussen. ;-)
 
Last edited:
  • Like
Reactions: Johannes S
Ahh, danke. Wenn ich einer VM z.B. 1x 8 Cores zuweise, wird dann auf dem Server physisch auch nur eine CPU verwendet? Sprich, wenn ich allen VMs nur 1x y Cores zuweise, dann langweilt sich die zweite CPU?
 
Natürlich nicht. PVE verteilt dynamisch alle verfügbaren Kerne, auch die vom zweiten Sockel an die VMs. Aber grundsätzlich gilt auch hier: weniger ist mehr. Also zu Anfang lieber etwas weniger Kerne vergeben und dann bei Bedarf erhöhen.
 
  • Like
Reactions: Johannes S
Ahh, danke. Wenn ich einer VM z.B. 1x 8 Cores zuweise, wird dann auf dem Server physisch auch nur eine CPU verwendet? Sprich, wenn ich allen VMs nur 1x y Cores zuweise, dann langweilt sich die zweite CPU?
Wenn du nur die eine VM hast, ja. Denn es wird immer die CPU bevorzugt, bei der der RAM Inhalt liegt, mit dem gearbeitet werden soll. Die VM nutzt dann den RAM der einen CPU und wenn die Kerne frei hat, wird immer diese benutzt.
Hat die CPU z.B. nur 6 Kerne frei, dann ist es besser mit der Limitierung des UPI/QPI Link zwischen den CPUs zu leben, als auf freie Kerne zu warten und so werden dann auch 2 Kerne der zweiten CPU herangezogen.

P.S. ist übrigens bei ESXi und HyperV ganz genau so.
 
  • Like
Reactions: Johannes S