GNU/Linux >> Linux の 問題 >  >> Linux

Windows 10 VMがQEMU-KVMで常に100%のCPU使用率を示すのはなぜですか?

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に次のように表示されることを確認します。


Linux
  1. OpenStackでWindows10VMが遅いのはなぜですか?

  2. Windows 10 VMがQEMU-KVMで常に100%のCPU使用率を示すのはなぜですか?

  3. 〜常に$ homeと等しいですか?

  1. sudoがエイリアスを無視するのはなぜですか?

  2. Unix時間が1970-01-01から始まるのはなぜですか?

  3. WindowsのSophosが原因でCPUが高くなる

  1. RDTSC を使用して CPU サイクルを取得する - RDTSC の値が常に増加するのはなぜですか?

  2. Linux で top によって報告される CPU 使用率が 100% を超えるのはなぜですか?

  3. ハードウェア ルーターは、スペック (RAM と CPU) が優れている Linux ルーターよりもパフォーマンスが優れているのはなぜですか?