W10 VM erkennt nur 2 / 4 vCPUs

h00bi

Fleet Admiral
Registriert
Aug. 2006
Beiträge
20.263
Hallo zusammen,

habe eine W10 22H2 VM auf Nutanix AHV am laufen.
Früher mit 2 vCPUs, jetzt erhöht auf 4 vCPUs wegen höherem Lesitungsbedarf.
VM runtergefahren, vCPUs erhöht, VM hochgefahren.

Der Taskmanager zeigt aber weiterhin nur 2 vCPUs/Logische Prozessoren an.
1673363640697.png
Der Gerätemanager listet aber korrekt 4 "Prozessoren"
1673363689834.png

an der msconfig wurde nicht gefummelt, sie würde aber ebenfalls nur ein 2er Limit anbieten.

VM wurde mehrfach neu gestartet, keine Änderung.
Wie kann ich W10 erklären, dass es gefälligst die Cores nochmal durchzählt?
 
Wenn du eins der Diagramme mit rechts anklickst und bei "Graph ändern in" nachschaust, was steht da? Gesamtauslastung oder Logische Prozessoren?

Du hast ja im oberen Bild 2 Sockets, dem System also gesagt es sind 2 CPU's verbaut. Wieviele Threads die haben kann man am Diagramm erkennen/umschalten.

Der Gerätemanager zeigt immer pro Thread eine Zeile an, das würde dazu passen. Du hast quasi 2 Einkern-CPU's mit jeweils 2 Threads dem virtuellen System vorgegaukelt :=)
 
  • Gefällt mir
Reaktionen: aragorn92, Sbibi und NameHere
h00bi schrieb:
Der printscreen zeigt 2 socket 2 cores - das sind zwar 4 cores aber die vm verhält sich anderst damit, in libvirt würde man socket=1 setzten, dies=1 (wenn nicht amd und pinned) cores=2 und threads=2 in der topologie.
Das ergäbe 2 cores + ht aka 4vcores

Für meine vfio habe ich zum beispiel 1 socket, 1 dies, 8 cores und 2 thread gesetzt + halt gpu passthrough meiner 1060 zum gamen umd so :) wenn der hypervisor ähnlich funkt könnte dier das helfen - mein libvirt xml für vfio mit pinning etc: https://pastebin.com/L7kCyL59

/E pinne mein ccd2 komplett zu der vm (7950x) - zusätzlich ist noch isolation eingerichtet für diese cores. Looking-glass wird als transmitter von der guest gpu zu der host gpu verwendet - bestes projekt ever, also should make a guide here.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Der Lord und NameHere
Ich musste das bei mir im virtmanager händisch ändern.
Hatte auch 2 Sockets.

Mit Quickemu hatte ich das Problem nicht.
 
kleiner_muck schrieb:
Was sagt denn BCDEdit ? Tauchen da numproc auf ?
Kein numproc Eintrag
Kenny [CH] schrieb:
Der printscreen zeigt 2 socket 2 cores
Die anderen VMs mit 4 vCPUs und 8 vCPUs zeigen das analog dazu an.
Hier von einer anderen VM mit 4 vCPUs:
1673366139099.png

d2boxSteve schrieb:
Wenn du eins der Diagramme mit rechts anklickst und bei "Graph ändern in" nachschaust, was steht da? Gesamtauslastung oder Logische Prozessoren?
es steht natürlich auf logische Prozessoren, sonst wäre da nur EIN Diagramm zur Gesamtauslastung.
 
Bob.Dig schrieb:
Nope, hatte er doch erklärt
Ich seh es doch auf dem Screen, dass es so ist wie ich es beschrieben habe und nicht wie er es beschrieben hat.

Aber
Bob.Dig schrieb:
Du hast ein Dual Sockel System lt. Taskmanager.
hat mich auf die richtige Fährte gebracht. W10 unterstützt nur 2 physische CPUs.
Die VMs mit mehr vCPUs sind alle Server Betriebsysteme die mehr CPUs nutzen können.
Ich hab die Konfig nun auf 2 vCPUs mit je 2 Cores geändert
Voila:
1673375565002.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Rickmer und Bob.Dig
Das sieht dann nach einem fehler in hypervisor aus...
Socket sollte immer auf 1 bleiben (besonders bei single socket system und windows home/pro)
Z.b. win 11 supported nur 1 cpu / pro würde 2 unterstützen (gemäss windows selbst) für mehr sockets müsste man server verwenden.
Ebenso regiert windows anderst mit socket cpus - aka performt es schlechter, besonders wenn nur eine cpu da ist.
Ich würde mal beim hersteller schauen fragen, evtl haben die eine lösung - libvirt würde mit meiner conf oben sauber 1 socket 8 cores mit je 2 threads (16 vcores) im task manager anzeigen.

Gibt es ausser dem gui part vom hypervisor evtl auch eine config für die wm? - evtl nutzen die im backend plain qemu befehle - da könnte man dies dann korrekt (in qemu syntax style) eintragen dann sollte das auch funktionieren?


@h00bi
Wait wait wait https://portal.nutanix.com/page/documents/kbs/details?targetId=kA00e000000XmtUCAS
virsh list / virsh edit - dat is libvirt
Bitte virsh edit nameofvm
cpu tag suchen und
<cpu mode="host-passthrough" check="none" migratable="on">
<topology sockets="1" dies="1" cores="x" threads="2"/>
<cache mode="passthrough"/>
<feature policy="require" name="topoext"/>
</cpu>

Das fett gedruckte pasten - x mit anzahl cores gewünscht werden austauschen. Z.b. 2 für 2*2=4vcores.
Wenn du amd als host hast, würde ich noch <feature policy="require" name="topoext"/> adden (für hyperthreading)

/E dies ist seit ca 2jahren+ (nach ryzen release afik wurde das geadded) in der spec, wenn probleme einfach die dies=1 mal löschen und testen (kann sein das dein libvirt noch eine ältere version ist)

Ebenso wenn du da drin bist schau mal in meiner conf im feature tag, ob diese auch bei dir vorhanden sind - das sind enlightements für die vm, welche gratis perfomance geben (aka die vm kann besser im vm context arbeiten mit diesen hints/features etc) dok dafür: https://libvirt.org/formatdomain.html#hypervisor-features

/Sieht nach einem gui für libvirt aus - könnte man auch das reguläre libvirt / virtual maschine manager gui brauchen - würde wenn aktiviert auch xml editing unterstützen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: h00bi
h00bi schrieb:
W10 unterstützt nur 2 physische CPUs.
Professional unterstützt 2 Sockel. Enterprise/Education/Professional for Workstations unterstützen min. 4 Sockel.
 
  • Gefällt mir
Reaktionen: h00bi und Kenny [CH]
Kenny [CH] schrieb:
cpu tag suchen und
<cpu mode="host-passthrough" check="none" migratable="on">
<topology sockets="1" dies="1" cores="x" threads="2"/>
<cache mode="passthrough"/>
<feature policy="require" name="topoext"/>
Code:
[root@Node3 ~]# virsh list
 Id   Name                                   State
------------------------------------------------------
 1    NTNX-Node3-CVM                         running
 2    26423178-e5e1-4994-be71-480448bc9df6   running
 3    b9b99b29-365e-4729-8fb9-742f3ca3ab3d   running
 4    9b98cda4-825f-4116-8523-de1c822d9209   running
 5    84325343-ca90-4bb5-ba57-bcb0b843c73f   running
 6    ab86856f-3302-46f7-a0ad-86b58d81cd98   running
 11   305ffe7f-e0bf-45b2-8e80-57c082d487b5   running

[root@Node3 ~]# virsh dumpxml NTNX-Node3-CVM | grep topology
    <topology sockets='1' dies='1' cores='8' threads='1'/> -> Controller VM
[root@Node3 ~]# virsh dumpxml 26423178-e5e1-4994-be71-480448bc9df6 | grep topology
    <topology sockets='120' dies='1' cores='2' threads='1'/> -> Server 2019 2 vCPUs mit je 2 Cores
[root@Node3 ~]# virsh dumpxml b9b99b29-365e-4729-8fb9-742f3ca3ab3d | grep topology
    <topology sockets='120' dies='1' cores='2' threads='1'/> ->Server 2016 4 vCPUs
[root@Node3 ~]# virsh dumpxml 9b98cda4-825f-4116-8523-de1c822d9209 | grep topology
    <topology sockets='240' dies='1' cores='1' threads='1'/> ->Server 2019 4 vCPUs
[root@Node3 ~]# virsh dumpxml 84325343-ca90-4bb5-ba57-bcb0b843c73f | grep topology
    <topology sockets='60' dies='1' cores='4' threads='1'/> -> Linux Veeam Proxy 4 vCPUs
[root@Node3 ~]# virsh dumpxml ab86856f-3302-46f7-a0ad-86b58d81cd98 | grep topology
    <topology sockets='240' dies='1' cores='1' threads='1'/> ->Server 2019 4 vCPUs
[root@Node3 ~]# virsh dumpxml 305ffe7f-e0bf-45b2-8e80-57c082d487b5 | grep topology
    <topology sockets='120' dies='1' cores='2' threads='1'/> -> W10 VM mit 2 vCPUs mit je 2 Cores

Frisch angelegte VM mit 4 vCPUs
Code:
[root@Node3 ~]# virsh dumpxml a7ba7996-deab-4927-b1f5-12aa16011c94 | grep topology
    <topology sockets='240' dies='1' cores='1' threads='1'/>
[root@Node3 ~]#
1673426341507.png


Frisch angelegte VM mit 1 vCPUs @ 4 Cores
Code:
[root@Node3 ~]# virsh dumpxml f753efa9-0ff1-48de-9f11-b5037c089d93 | grep topology
    <topology sockets='60' dies='1' cores='4' threads='1'/>
[root@Node3 ~]#
1673426473655.png


Code:
  <cpu mode='custom' match='exact' check='partial'>
    <model fallback='forbid'>kvm64</model>
    <vendor>Intel</vendor>
    <topology sockets='60' dies='1' cores='4' threads='1'/>
    <cache level='3' mode='emulate'/>
    <feature policy='require' name='smap'/>
    <feature policy='require' name='avx'/>
    <feature policy='require' name='tsc_adjust'/>
    <feature policy='require' name='tsc-deadline'/>
    <feature policy='require' name='avx512dq'/>
    <feature policy='require' name='stibp'/>
    <feature policy='require' name='invpcid'/>
    <feature policy='require' name='xsave'/>
    <feature policy='require' name='spec-ctrl'/>
    <feature policy='require' name='xsaveopt'/>
    <feature policy='require' name='erms'/>
    <feature policy='require' name='avx512bw'/>
    <feature policy='require' name='xtpr'/>
    <feature policy='require' name='smep'/>
    <feature policy='require' name='pcid'/>
    <feature policy='require' name='clflushopt'/>
    <feature policy='require' name='est'/>
    <feature policy='require' name='monitor'/>
    <feature policy='require' name='smx'/>
    <feature policy='require' name='pbe'/>
    <feature policy='require' name='tm2'/>
    <feature policy='require' name='abm'/>
    <feature policy='require' name='adx'/>
    <feature policy='require' name='3dnowprefetch'/>
    <feature policy='require' name='tm'/>
    <feature policy='require' name='sse4.1'/>
    <feature policy='require' name='sse4.2'/>
    <feature policy='require' name='pclmuldq'/>
    <feature policy='require' name='xgetbv1'/>
    <feature policy='require' name='md-clear'/>
    <feature policy='require' name='acpi'/>
    <feature policy='require' name='fma'/>
    <feature policy='require' name='rsba'/>
    <feature policy='require' name='vme'/>
    <feature policy='require' name='pdcm'/>
    <feature policy='require' name='xsaves'/>
    <feature policy='require' name='arat'/>
    <feature policy='require' name='dtes64'/>
    <feature policy='require' name='avx512cd'/>
    <feature policy='require' name='rdtscp'/>
    <feature policy='require' name='clwb'/>
    <feature policy='require' name='dca'/>
    <feature policy='require' name='lahf_lm'/>
    <feature policy='require' name='rdseed'/>
    <feature policy='require' name='popcnt'/>
    <feature policy='require' name='ht'/>
    <feature policy='require' name='pdpe1gb'/>
    <feature policy='require' name='intel-pt'/>
    <feature policy='require' name='fsgsbase'/>
    <feature policy='require' name='f16c'/>
    <feature policy='require' name='ds'/>
    <feature policy='require' name='xsavec'/>
    <feature policy='require' name='aes'/>
    <feature policy='require' name='avx2'/>
    <feature policy='require' name='ss'/>
    <feature policy='require' name='bmi1'/>
    <feature policy='require' name='bmi2'/>
    <feature policy='require' name='ssse3'/>
    <feature policy='require' name='ssbd'/>
    <feature policy='require' name='avx512f'/>
    <feature policy='require' name='ds_cpl'/>
    <feature policy='require' name='movbe'/>
    <feature policy='require' name='rdrand'/>
    <feature policy='require' name='avx512vl'/>
    <feature policy='require' name='arch-facilities'/>
    <feature policy='require' name='x2apic'/>
    <numa>
      <cell id='0' cpus='0-239' memory='8388608' unit='KiB' memAccess='shared'/>
    </numa>
  </cpu>


In AHV there are two options to configure CPU resources:
num_vcpus - vCPU(s) in AHV define a single socket in the OS. The reason why there is an option to define multiple vCPU(s) per VM is simply for licensing reasons as some software products bind the license to the number of cores vs the number of sockets.
num_cores_per_vcpus
- number Of Cores Per vCPU defines the number of cores within a vCPU defined in the step above. The default is to define a single vCPU + a number of cores.
 
Zuletzt bearbeitet:
Diese socket sehen wirklich falsch aus - bug in dem hypervisor gui my guess - das sollte nie bei 240 oder 60 liegen lol. Würde das mal manuel fixen und schauen - würde ebenso die one thread auf eine 'normal' geschichte ändern sofern du nicht bei alder lake/kabe lake big little bist - da könnte es für die e cores durch aus sinn ergeben :)
 
https://next.nutanix.com/ncm-intell...s-vs-number-of-cores-uvms-numa-and-cvms-37905
To ensure optimal performance of the VMs in the cluster follow simple rules:
  • Use vCPUs instead of cores to increase the number of vCPUs available for a VM. Hot add of CPU cores is not supported.


Die Anzeige der Sockets haben wohl was mit den NUMA Nodes zu tun.
In dem von dir geposteten Link zum Nutanix Portal wird das auch mehrfach so gezeigt.

<maxMemory slots='240' unit='KiB'>8589934592</maxMemory>
<memory unit='KiB'>16777216</memory>
<currentMemory unit='KiB'>16777216</currentMemory>
<memoryBacking>
<hugepages/>
<nosharepages/>
</memoryBacking>
<vcpu placement='static' current='4'>240</vcpu>
<resource>
<numa>
<cell id='0' cpus='0-239' memory='16777216' unit='KiB' memAccess='shared'/> </numa>
 
Btw was ist doe hw vorauf du hostest/ die vm betreibst? :) Aka ist die hw wirklich numa oder uma? :)
 
Zurück
Oben