しばらく前に、Win10 1803 WMがホスト上でCPU使用率を高くすることに気づきました。クライアントのCPU使用率が0%であっても、25%。 virt XMLファイルに次の設定を含めることで解決しました。
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<synic state='on'/>
<stimer state='on'/>
</hyperv>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='hypervclock' present='yes'/>
</clock>
しかし、問題は新しいものです。 Debianストレッチ(QEMU 2.8.1
/Kernel 4.9
)からバスター(QEMU 3.1.0
/Kernel 4.19
)およびWindows 101809に移行しました。
この問題は、同じハードウェアのStretchで使用できたBusterで<synic state='on'/>
を使用できなくなったことに関連している可能性があります。
VM)を起動しようとすると、このエラーが発生します
error: internal error: process exited while connecting to monitor: Hyper-V SynIC (requested by 'hv-synic' cpu flag) requires Hyper-V VP_INDEX ('hv-vpindex')
2019-08-06T13:29:14.114943Z qemu-system-x86_64: kvm_init_vcpu failed: Function not implemented
lscpu
を実行すると、hv*
フラグがまったくありません。しかし、繰り返しになりますが、同じCPUでStretchで動作しました。
少なくともQEMU 3.1.0
/Kernel 4.19
QEMUマシンタイプ>pc-i440fx-3.0はsynICをサポートしていないようです。これはWindows10ゲストビルドで必要です> = 1803ではありませんホストのCPU使用率が高いという問題があります。
次のマシンタイプをテストしました:
pc-i440fx-2.8(OK)
pc-i440fx-3.0(OK)
pc-i440fx-3.1(失敗)
pc-q35-3.1(失敗)
Virt XMLファイルのXML要素:
</features>
...
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<synic state='on'/>
<stimer state='on'/>
</hyperv>
...
</features>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='hypervclock' present='yes'/>
</clock>
UPDATE:
問題だったのは私のXML設定であることが判明しました!
以下により、新しいQEMUマシンタイプがホストCPUの使用率を高くすることなくスムーズに実行されるようになります。
<hyperv>
<relaxed state='on'/>
<vpindex state='on'/>
<synic state='on'/>
<stimer state='on'/>
</hyperv>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='hypervclock' present='yes'/>
</clock>
Vitaly Kuznetsov 非常に辛抱強く、設定の誤りに気づかせてくれてありがとう。