かなり前に qemu を使用して Windows10 VM を作成し、それをさまざまなサーバーにコピーして、サーバーの機能に基づいてさまざまな-smp
レベルで使用してきました (コマンドライン引数を使用して起動し、-smp 4
または-smp 8
などを使用します)。基本的に、システムで使用可能な CPU コアの約 75% を使用していますが、10 を超えることはありません。 も同様です。インストールなどのテストに使用するため、-mem
で実行しています。-snapshot
私のサーバーはすべて x86_64 で、Ubuntu 20.04 (QEMU 4.2.1) を実行しています。
それはうまくいきましたが、Windows VM イメージを新しいパッチなどで更新する必要があったので、それを実行しました (もちろん、-snapshot
何もせずに)。うまくいきました。その後、VM イメージを他のサーバーにコピーしましたが、昨夜、そのうちの 1 つでテストが失敗しました。
再試行すると、このイメージがそのサーバー上で起動すると、長時間停止し、その後「電源ドライバーの状態エラー」というエラーで BSOD が表示され、最終的に再起動してその後は正常に見えることがわかります。ただし、最終的に起動するまでにテストがすべてタイムアウトするなど、これは良くありません。
このエラーを検索しましたが、あまりヒットしませんでした。そこで、ランダムに試してみることにしました :)。最初に気付いたのは、「動作中の」システムと「動作していない」システムの両方が を使用しているのに、-mem 8G
動作中のシステムでは が使用され-smp 4
ているのに対し、動作していないシステムでは が使用されている-smp 10
ことです。動作していないシステムは、より多くの CPU を備えた大規模なサーバーです。 の末尾には次のように/proc/cpuinfo
表示されます。
processor : 19
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
そこで、「動作していない」システムで qemu を再起動してみたところ-smp 4
、なんと、動作しました。これも試しました-smp 8
が、失敗しましたが、-smp 6
動作しました。
私にとっては残念なことです。なぜこのようなことが起こるのか、なぜ古いバージョンは問題なく動作していたのに新しいバージョンのイメージではこの問題が発生するのか、イメージ内から修正する方法があるかどうか (QEMU の起動を変更すると、多くの Git ブランチ全体で多くのテスト スクリプトを変更する必要があるため面倒です)、またはその他のヒントについて、何かアイデアをお持ちの方はいらっしゃいますか?
私の QEMU スタート ラインは次のとおりです。
qemu-system-x86_64 -enable-kvm -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time \
-vnc 0.0.0.0:5 -pidfile qemu-installer-vm.pid -daemonize \
-device nec-usb-xhci -device usb-tablet \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-drive file=win10-x64.qcow2,if=none,id=drive-ide0-0-0,format=qcow2 -vga std \
-net user,hostfwd=tcp::6350-:22 -net nic -name windows \
-m 8G -smp 10 -snapshot
-smp 10
を に変更すると-smp 4
動作します。
答え1
解決策ではありませんが、解決策につながる可能性があります。
古いバグレポートより:
バグ 689665: CPU モデル Nehalem Penryn および Conroe で障害が発生した CPU コアの数を指定します
原因: qemu-kvm で定義されている一部の CPU モデルの「レベル」値が低い (< 4)。これには、Conroe、Penrym、Nehalem などのモデルが含まれます。
これは、qemu-kvm には、VM の仮想アーキテクチャに応じてコア数に制限があるということを意味していると思います。
VM の定義方法についてはよくわかりませんし、qemu も使用していませんが、おそらくその限界の 1 つに達しているのでしょう。コア数を増やすには、qemu のバージョンと構成パラメータを試してみる必要があるかもしれません。