OpenStack用のWindowsイメージを作成する方法に関する私の記事と、Windowsの修正がPass Specializeの無人応答ファイルを解析または処理できなかった、およびOpenStackCloud用のWindowsVM自動ログインを構成する方法などの関連記事を読んだことがあるかもしれません。シリーズに追加するために、ここで別の問題が発生しました。つまり、Windows 10 VMはQEMU-KVMで常に100%のCPU使用率を示し、VMを使用できなくなります。
セットアップ情報
KVMバージョン: 4.2.0
ゲストOS: 8vCPUを搭載したWindows10ホームVM
ホストCPU: AMD Opteron(TM)プロセッサ6212と
- CPUモデル:x86_64
- CPU:32
- CPU周波数:2593 MHz
- CPUソケット:1
- ソケットあたりのコア:32
- コアあたりのスレッド:1
- NUMAセル:1
- メモリサイズ:65633412 KiB
ただし、WindowsはこのvCPUを(コアではなく)個別のプロセッサとして検出し、以下に示すように、そのうちの1つしか使用できませんでした:
問題
WindowsのDevice Manager
を開きます Processors
に移動します ゲストOSに割り当てた8つのvCPUが割り当てられていることを確認します。
同時に、Windows 10のプロパティとタスクマネージャーの両方が、使用可能なQEMU仮想プロセッサーが1つだけであると表示されます。
説明
つまり、Windows 10は、プロセッサ上にコアがいくつあっても、1つのコアしか使用できません。
Windowsでサポートされているプロセッサの数
問題は、デスクトップバージョンのWindowsには、コンピューターが使用できる物理プロセッサー(ソケット)の最大数に制限があることです。
- Windows 10 Home – 1 CPU
- Windows 10 Professional – 2 CPU
- Windows 10ワークステーション–最大4 CPU
- Windows Server 2016 –最大64 CPU
ただし、この制限はコアの数とは関係ありません。仮想マシンのパフォーマンスを向上させるために、より多くのコアを備えたプロセッサを使用できます。
ソリューション
QEMU-KVMでの仮想コアとvCPUの管理
Windows 10VMを実行しているKVMハイパーバイザーでは、割り当てられたすべての仮想コアは個別のプロセッサーと見なされます。仮想マシンに割り当てられたすべてのCPUリソースを使用するには、1つの8コアプロセッサを認識している必要があります。 KVMハイパーバイザーを使用すると、ユーザーは各仮想マシンで使用される仮想コアの数を設定できます。
より高い番号を構成しないでください。各VMのコアの数各VMに、ホストコンピューターで使用可能な実際のコアの数よりも多くの仮想コアを構成しないでください。
仮想マシンをシャットダウンします(win10はVMの名前です)
# virsh shutdown win10
KVMVMのXML構成を編集します
# virsh edit win10
出力 :
<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> .... ....
</features>
の後に次のブロックを追加します
<cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='8' threads='1'/> </cpu>
構成ファイルを保存してVMを起動します。次に、Windows 10ゲストVMにログインし、タスクマネージャーで割り当てられたすべての仮想コアがWindowsに次のように表示されることを確認します。