Möglicherweise haben Sie meinen Artikel über das Erstellen eines Windows-Images für OpenStack und die zugehörigen Artikel gelesen, wie z. Um die Serie zu ergänzen, bin ich hier auf ein anderes Problem gestoßen. Das heißt, die Windows 10-VM zeigt immer 100 % CPU-Auslastung auf QEMU-KVM, wodurch die VM unbrauchbar wird.
Setup-Info
KVM-Version: 4.2.0
Gastbetriebssystem: Windows10 Home-VM mit 8 vCPUs
HOST-CPU: AMD Opteron(TM) Prozessor 6212 mit
- CPU-Modell:x86_64
- CPU(s):32
- CPU-Frequenz:2593 MHz
- CPU-Sockel:1
- Kerne pro Sockel:32
- Thread(s) pro Kern:1
- NUMA-Zelle(n):1
- Speichergröße:65633412 KiB
Windows hat diese vCPUs jedoch als separate Prozessoren (keine Kerne) erkannt und konnte nur einen davon verwenden, wie unten gezeigt:
Problem
Öffnen Sie den Windows Device Manager
und navigieren Sie zu Processors
um sicherzustellen, dass 8 vCPUs zugewiesen wurden, die wir dem Gastbetriebssystem zugewiesen hatten.
Gleichzeitig zeigen sowohl die Windows 10-Eigenschaften als auch der Task-Manager an, dass nur 1 virtueller QEMU-Prozessor verfügbar ist.
Erklärung
Dies bedeutet, dass Windows 10 nur 1 Kern verwenden kann, egal wie viele davon Sie auf dem Prozessor haben.
Anzahl der unterstützten Prozessoren in Windows
Das Problem besteht darin, dass die Desktop-Version von Windows eine Beschränkung hinsichtlich der maximalen Anzahl physischer Prozessoren (Sockets) hat, die ein Computer verwenden kann
- Windows 10 Home – 1 CPU
- Windows 10 Professional – 2 CPU
- Windows 10 Workstation – bis zu 4 CPUs
- Windows Server 2016 – bis zu 64 CPU
Diese Einschränkung bezieht sich jedoch nicht auf die Anzahl der Kerne. Um die Leistung der virtuellen Maschine zu verbessern, können Sie einen Prozessor mit mehr Kernen verwenden.
Lösung
Verwaltung von virtuellem Kern und vCPU in QEMU-KVM
In KVM Hypervisor mit Windows 10 VM werden alle zugewiesenen virtuellen Kerne als separate Prozessoren betrachtet. Um alle einer virtuellen Maschine zugewiesenen CPU-Ressourcen zu nutzen, muss sie einen 8-Kern-Prozessor sehen. Mit dem KVM-Hypervisor kann der Benutzer die Anzahl der virtuellen Kerne festlegen, die von jeder virtuellen Maschine verwendet werden.
Nie höhere Nr. konfigurieren. von Kernen auf jeder VMKonfigurieren Sie niemals eine höhere Anzahl virtueller Kerne auf jeder VM als die Anzahl realer Kerne, die auf dem Hostcomputer verfügbar sind.
Fahren Sie die virtuelle Maschine herunter (win10 ist der Name der VM)
# virsh shutdown win10
Bearbeiten Sie die XML-Konfiguration der KVM-VM
# virsh edit win10
Ausgabe :
<domain type='kvm'> <name>win10</name> <uuid>3b4b8a6c-bf72-4cf8-8c63-fd7b5edf6784</uuid> <metadata> <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> <libosinfo:os id="http://microsoft.com/win/10"/> </libosinfo:libosinfo> </metadata> <memory unit='KiB'>8388608</memory> <currentMemory unit='KiB'>8388608</currentMemory> <vcpu placement='static'>8</vcpu> <os> <type arch='x86_64' machine='pc-q35-rhel8.2.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> </hyperv> <vmport state='off'/> </features> .... ....
Fügen Sie den folgenden Block nach </features>
hinzu
<cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='8' threads='1'/> </cpu>
Speichern Sie die Konfigurationsdatei und starten Sie die VM. Melden Sie sich jetzt bei der Windows 10-Gast-VM an und stellen Sie sicher, dass Windows alle zugewiesenen virtuellen Kerne im Task-Manager wie unten angezeigt sieht.