Isolierte CPUs nutzen

Noxes

New Member
Jul 7, 2023
2
0
1
Hallo,

mein Ziel ist es in „Proxmox 8.0.3 Neuinstallation“ die 12 Kerne von 16 an der CPU i7-12650H zu isolieren und die 12 Kerne den VMs explizit zuzuweisen, jedoch wenn ich die isolierten Kerne nutzen will (in meinem Fall Kern 0,1,2,3) wird nur ein Kern an die VM weitergeleitet (prüfe das mit htop über die Shell), beim jedem neuster der VM wird von den 4 Kernen ein billiger weitergeleitet.
Wenn die Kerne nicht isoliert sind, kann ich die Zuweisung über CPU Affinity ohne Probleme durchführen.
Habt Ihr da eine Ahnung, woran es liegt, dass die isolierten Kerne nicht ordentlich weitergeleitet werden.

Ich zeige mal, was ich gemacht habe:
nano /etc/default/grub
1688690007400.png
update-grub

CPU Infos:
12 Power-Kerne und 4 E-Kerne, Zuweisung 1zu1
lstopo
L3 L#0 (24MB)
L2 L#0 (1280KB) + L1d L#0 (48KB) + L1i L#0 (32KB) + Core L#0
PU L#0 (P#0)
PU L#1 (P#1)
L2 L#1 (1280KB) + L1d L#1 (48KB) + L1i L#1 (32KB) + Core L#1
PU L#2 (P#2)
PU L#3 (P#3)
L2 L#2 (1280KB) + L1d L#2 (48KB) + L1i L#2 (32KB) + Core L#2
PU L#4 (P#4)
PU L#5 (P#5)
L2 L#3 (1280KB) + L1d L#3 (48KB) + L1i L#3 (32KB) + Core L#3
PU L#6 (P#6)
PU L#7 (P#7)
L2 L#4 (1280KB) + L1d L#4 (48KB) + L1i L#4 (32KB) + Core L#4
PU L#8 (P#8)
PU L#9 (P#9)
L2 L#5 (1280KB) + L1d L#5 (48KB) + L1i L#5 (32KB) + Core L#5
PU L#10 (P#10)
PU L#11 (P#11)
L2 L#6 (2048KB)
L1d L#6 (32KB) + L1i L#6 (64KB) + Core L#6 + PU L#12 (P#12)
L1d L#7 (32KB) + L1i L#7 (64KB) + Core L#7 + PU L#13 (P#13)
L1d L#8 (32KB) + L1i L#8 (64KB) + Core L#8 + PU L#14 (P#14)
L1d L#9 (32KB) + L1i L#9 (64KB) + Core L#9 + PU L#15 (P#15)

Probiert habe ich das mit dieser Einstellung, leider ohne Erfolg (es wird nur ein Kern weitergeleitet):

1688690094978.png

Und mit dieser Zuweisung auch ohne Erfolg (es wird nur ein Kern weitergeleitet):

chmod +x /var/lib/vz/snippets/taskset-hook.sh
qm set 100 --hookscript local:snippets/taskset-hook.sh

#!/bin/bash
vmid="$1"
phase="$2"
if [[ "$phase" == "post-start" ]]; then
main_pid="$(< /run/qemu-server/$vmid.pid)"
cpuset="0-3"
cpuset="$(< /etc/pve/qemu-server/$vmid.cpuset)"
taskset --cpu-list --all-tasks --pid "$cpuset" "$main_pid"
fi
 
Ich kann bei dem Problem nicht helfen, aber was bezweckst du denn damit? Eventuell gibt es ja elegantere Lösungen.
 
Ich habe mich mit "CPU Pinning in Proxmox:"beschäftigt und bin auf das Youtube Video (siehe unten) gestoßen was zeigt, dass die CPU Latenzen mit weitergab der isolierten CPUs an die VMs die besten Resultate bringen, jedoch habe ich es nicht hinbekommen, deswegen die Frage.

Video: https://www.youtube.com/watch?v=-c_451HV6fE
Seine Auswertung: https://docs.google.com/spreadsheets/d/1oMxCvhliSRqciaxIYvF-pdgAaDRZudToZMsWLz-CBlc/edit#gid=0

Klar wenn es bessere Lösungen gibt, bin ich immer Interessiert.
 
Last edited:
Wenn du tatsächlich eine extrem Latenzempfindliche High Performance VM hast, kann das Sinn machen. Bei normalen VMs reicht es die Physikalische CPU nicht so stark zu überprovisionieren.
Ich habe bei Kunden Latenzempfindliche SQL Server und die laufen auf Proxmox bis zu 80% schneller als auf vSphere, das genügt in der Regel immer. Mit CPU Pinning kannst du eine VM aber nicht mehr live migrieren, daher mache ich das nie.
Wenn du zuhause maximale Performance haben möchtest, nimm für alle Dienste, welche keine VM erzwingen einfach einen LXC.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!