如果我更改 SMP 級別,qemu Windows VM 會失敗

如果我更改 SMP 級別,qemu Windows VM 會失敗

I created a Windows10 VM using qemu a LONG time ago and have copied it around to various servers and have been using it with different -smplevels (I start it just using command line arguments and I just use -smp 4or -smp 8or whatever) based on the capabilities of the伺服器.基本上我使用了系統上大約 75% 的可用 CPU 核心,但從未超過 10 個。與 相同-mem。我運行它是-snapshot因為我只是用它來測試安裝等。

我的所有伺服器都是 x86_64,運行 Ubuntu 20.04 (QEMU 4.2.1)

這工作得很好,但我需要用更新的補丁等更新 Windows VM 映像,所以我這樣做了(沒有-snapshot明顯的情況),而且效果很好。然後我將虛擬機器映像複製到其他伺服器,但昨晚在其中一台伺服器上測試失敗。

重試表明,當該映像在該伺服器上啟動時,它會暫停很長時間,然後拋出 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

這不是一個解決方案,但它可能指向一個解決方案。

來自舊的錯誤報告:
Bug 689665:指定 cpu 型號 Nehalem Penryn 和 Conroe 失敗的 cpu 核心數

原因:qemu-kvm 上定義的某些 CPU 型號的「等級」值較低(< 4)。其中包括模型:Conroe、Penrym、Nehalem。

我認為這意味著 qemu-kvm 對核心數量有限制,具體取決於 VM 的虛擬架構。

我不太了解你的虛擬機器是如何定義的,而且我不使用 qemu,但你可能已經達到了它的限制之一。您可能需要嘗試 qemu 版本和配置參數才能獲得更高的核心數量。

相關內容