Potresti aver letto il mio articolo su Come creare un'immagine Windows per OpenStack e i suoi articoli correlati come la correzione di Windows che non è stato in grado di analizzare o elaborare il file di risposta automatico per Pass Specialize e Come configurare l'accesso automatico di Windows VM per OpenStack Cloud. Per aggiungere alla serie, qui ho riscontrato un altro problema. ovvero, la VM di Windows 10 mostra l'utilizzo della CPU al 100% sempre su QEMU-KVM, rendendo la VM inutilizzabile.
Informazioni sulla configurazione
Versione KVM: 4.2.0
OS ospite: VM Windows10 Home con 8vCPU
CPU HOST: Processore AMD Opteron™ 6212 con
- Modello CPU:x86_64
- CPU:32
- Frequenza CPU:2593 MHz
- Presa/e CPU:1
- Core(i) per socket:32
- Fili per core:1
- Cella/e NUMA:1
- Dimensioni della memoria:65633412 KiB
Tuttavia, Windows ha rilevato queste vCPU come processori separati (non core) e potrebbe utilizzarne solo 1 come mostrato di seguito:
Problema
Apri Device Manager
di Windows e vai a Processors
per assicurarci di aver allocato 8 vCPU che avevamo assegnato al SO guest.
Allo stesso tempo, sia le proprietà di Windows 10 che il task manager mostrano che è disponibile solo 1 processore virtuale QEMU.
Spiegazione
Significa che Windows 10 è in grado di utilizzare solo 1 core, non importa quanti di essi hai sul processore.
Numero di processori supportati in Windows
Il problema è che la versione desktop di Windows ha una restrizione sul numero massimo di processori fisici (socket) che un computer può utilizzare
- Windows 10 Home – 1 CPU
- Windows 10 Professional – 2 CPU
- Windows 10 Workstation:fino a 4 CPU
- Windows Server 2016:fino a 64 CPU
Tuttavia, questa restrizione non è correlata al numero di core. Per migliorare le prestazioni della Macchina Virtuale, puoi utilizzare un processore con più core.
Soluzione
Gestire Virtual Core e vCPU in QEMU-KVM
Nell'hypervisor KVM che esegue Windows 10 VM, tutti i core virtuali assegnati sono considerati processori separati. Per utilizzare tutte le risorse CPU allocate a una macchina virtuale, è necessario che sia presente un processore a 8 core. L'hypervisor KVM consente all'utente di impostare il numero di core virtuali utilizzati da ciascuna macchina virtuale.
Mai configurare un n. di core su ogni macchina virtualeNon configurare mai un numero maggiore di core virtuali su ciascuna VM rispetto al numero di core reali disponibili sul computer host.
Spegni la macchina virtuale (win10 è il nome della VM)
# virsh shutdown win10
Modifica la configurazione XML della VM KVM
# virsh edit win10
Risultato :
<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> .... ....
Aggiungi il seguente blocco dopo </features>
<cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='8' threads='1'/> </cpu>
Salva il file di configurazione e avvia la VM. Ora accedi alla VM guest di Windows 10 e assicurati che Windows veda tutti i core virtuali allocati in Task Manager come di seguito.