[SOLVED] Windows VM sieht nur 1 Thread pro Core Problem

Agon01

New Member
Feb 21, 2025
4
0
1
Hallo zusammen,
vielen Dank vorab an alle, die mir bei meinem Problem helfen können!

Ich nutze einen AMD Ryzen 9 9950X 16-Core-Prozessor (1 Socket), der über 32 Threads verfügt. Diese werden von Proxmox korrekt als 32 CPUs erkannt. Allerdings sieht meine Windows-VM nur 16 Threads und nutzt bei voller Auslastung maximal 52 % der CPU-Leistung.

Die CPU ist in den Hardware-Einstellungen der VM als "Host" konfiguriert, und ich habe 16 Kerne zugewiesen. Weiß jemand, warum die Windows-VM nicht alle 32 Threads erkennt? Gibt es zusätzliche Einstellungen, die vorgenommen werden müssen?

Vielen Dank für eure Unterstützung!
 

Attachments

  • CleanShot 2025-02-21 at 13.23.05.png
    CleanShot 2025-02-21 at 13.23.05.png
    9.7 KB · Views: 7
  • CleanShot 2025-02-21 at 13.23.34.png
    CleanShot 2025-02-21 at 13.23.34.png
    5 KB · Views: 7
  • CleanShot 2025-02-21 at 13.24.15.png
    CleanShot 2025-02-21 at 13.24.15.png
    57.7 KB · Views: 7
  • 2025-02-21 13.26.36.jpg
    2025-02-21 13.26.36.jpg
    47 KB · Views: 7
  • 2025-02-21 13.26.40.jpg
    2025-02-21 13.26.40.jpg
    20.7 KB · Views: 7
Hallo Agon01

Bei den meisten Virtualisierungslösungen entspricht 1 physischer Kern (mit 2 Threads) - 2 virtuellen Kernen (wenn HT / SMT von der CPU unterstützt wird und aktiviert ist). In deinem Fall, wenn du einer VM 16 Kerne zuweist werden 8 physische Kerne verwendet. Du könntest der VM 32 Kerne zuweisen, dann wird der ganze Prozessor verwendet. Besser wäre es aber ein paar Kerne für Proxmox übrig zu lassen. Wenn das die einzige VM ist würde ich der maximal 28 Kerne zuweisen, dann bleiben noch 2 Kerne (4 Threads) exklusiv für Proxmox. Überbuchen wäre zwar möglich aber das würde ich vermeiden.
 
  • Like
Reactions: GMBauer
Hallo Agon01

Bei den meisten Virtualisierungslös
Hallo Agon01

Bei den meisten Virtualisierungslösungen entspricht 1 physischer Kern (mit 2 Threads) - 2 virtuellen Kernen (wenn HT / SMT von der CPU unterstützt wird und aktiviert ist). In deinem Fall, wenn du einer VM 16 Kerne zuweist werden 8 physische Kerne verwendet. Du könntest der VM 32 Kerne zuweisen, dann wird der ganze Prozessor verwendet. Besser wäre es aber ein paar Kerne für Proxmox übrig zu lassen. Wenn das die einzige VM ist würde ich der maximal 28 Kerne zuweisen, dann bleiben noch 2 Kerne (4 Threads) exklusiv für Proxmox. Überbuchen wäre zwar möglich aber das würde ich vermeiden.

ungen entspricht 1 physischer Kern (mit 2 Threads) - 2 virtuellen Kernen (wenn HT / SMT von der CPU unterstützt wird und aktiviert ist). In deinem Fall, wenn du einer VM 16 Kerne zuweist werden 8 physische Kerne verwendet. Du könntest der VM 32 Kerne zuweisen, dann wird der ganze Prozessor verwendet. Besser wäre es aber ein paar Kerne für Proxmox übrig zu lassen. Wenn das die einzige VM ist würde ich der maximal 28 Kerne zuweisen, dann bleiben noch 2 Kerne (4 Threads) exklusiv für Proxmox. Überbuchen wäre zwar möglich aber das würde ich vermeiden.
Vielen Lieben DANK Markus!
 
Hallo zusammen,
vielen Dank vorab an alle, die mir bei meinem Problem helfen können!

Ich nutze einen AMD Ryzen 9 9950X 16-Core-Prozessor (1 Socket), der über 32 Threads verfügt. Diese werden von Proxmox korrekt als 32 CPUs erkannt. Allerdings sieht meine Windows-VM nur 16 Threads und nutzt bei voller Auslastung maximal 52 % der CPU-Leistung.

Die CPU ist in den Hardware-Einstellungen der VM als "Host" konfiguriert, und ich habe 16 Kerne zugewiesen. Weiß jemand, warum die Windows-VM nicht alle 32 Threads erkennt? Gibt es zusätzliche Einstellungen, die vorgenommen werden müssen?

Vielen Dank für eure Unterstützung!
Hi, man sollte nie alle Kerne des Hosts einer VM geben, dann lieber gleich direkt installieren ohne Virtualisierung. Du baust dir sonst ein extrem träges System, weil du mit einer VM schon CPU Warteschlangen produzierst und mit weiteren VMs wird es schnell unbenutzbar. Gib einer VM immer nur so viele Kerne, wie sie unbedingt braucht. Die CPU Latenzen danken es dir.
 
Hi, man sollte nie alle Kerne des Hosts einer VM geben, dann lieber gleich direkt installieren ohne Virtualisierung. Du baust dir sonst ein extrem träges System, weil du mit einer VM schon CPU Warteschlangen produzierst und mit weiteren VMs wird es schnell unbenutzbar. Gib einer VM immer nur so viele Kerne, wie sie unbedingt braucht. Die CPU Latenzen danken es dir.
Danke für den Tipp! Ich hatte geplant, meinen beiden Windows-VMs jeweils 14 Threads zuzuweisen und den Rest Proxmox zu überlassen. Da ich ohnehin nur zwei VMs betreibe und die Hauptlast auf den GPUs liegt, sollte das eigentlich in Ordnung sein. Mein Ziel ist es, die beiden Windows Systeme für unterschiedliche KI-Anwendungen einzusetzen, sodass sie parallel zueinander arbeiten können.
 
Sounds like a strange case—Proxmox sees all 32 threads, but Windows only uses half? Could it be a vCPU topology issue, or maybe NUMA settings playing tricks?
 
Die CPU ist in den Hardware-Einstellungen der VM als "Host" konfiguriert, und ich habe 16 Kerne zugewiesen. Weiß jemand, warum die Windows-VM nicht alle 32 Threads erkennt? Gibt es zusätzliche Einstellungen, die vorgenommen werden müssen?

How should the VM see more then 16 threads/cores, if you only assigned 16?
If you want 32 cores, you need to assign that much.
They arent detected as 1 core + 1 with hyperthreading. Hyperthreading is done within the hypervisor.

But even with 16 assigned it should be possible to 100% load the physical 16 core cpu, since it only has only 16 real cores.
But thats a different thing.
 
Last edited:
16 cores were loaded without issues, but the actual problem was that only 16 threads were detected. Following Markus's response, I received the recommendation to add 32 cores in the settings. After making this change, all threads were correctly displayed in Windows.

"In Proxmox, CPU allocation is based on threads rather than physical cores. When Proxmox shows "CPUs," it's actually referring to the total number of threads available. The solution you implemented - adding 32 cores in the settings - effectively told Proxmox to use all available threads. This is because Proxmox treats each thread as a separate "core" for allocation purposes."