Kvm-Virtualization

減少對執行來賓 Windows 伺服器的 CPU 分配

  • April 4, 2017

我使用 KVM 中的 Virtio 驅動程序安裝了 Ubuntu 16.04 作為主機和 Windows Server 2012 作為來賓。我可以在來賓執行時增加 CPU,但是我無法減少 CPU。分配給來賓的最大 CPU 為 20。我在來賓啟動時分配了 10 個 CPU,我正在嘗試執行以下命令將 CPU 減少到 8。

virsh setcpus --live --guest generic 8 

但是,這會導致以下錯誤:

error: internal error: 'can-offline' missing in reply of guest-get-vcpus

我試圖查看 guest-get-vcpus 命令,但結果如下:

$virsh qemu-agent-command generic '{"execute":"guest-get-vcpus"}' --pretty

{
"return": [
   {
       "online": true,
       "logical-id": 0
   },
   .
   .
   .
   {
       "online": true,
       "logical-id": 9
   }
]
}

然而,結果只有兩個參數“online”和“logical-id”。但是,我希望客人也返回值“可以離線”。

我已經安裝了 QEMU 2.5 版和最新的 virtio 驅動程序 0.1.126 版和 libvirtd 1.3.1 版。

您嘗試執行的 hotplug 命令需要來賓代理合作完成拔出操作。事實上,它實際上並沒有拔掉插頭——它只是要求客戶作業系統將 vCPU 標記為離線。不幸的是,僅在 Linux 版本的 QEMU 來賓代理中實現了對此的支持。即使在最新的 2.9.0 版本的 QEMU 中,guest agent 也無法在 Windows guest 中進行 CPU 離線。

您收到的錯誤消息毫無幫助,實際上顯示了 QEMU 來賓代理中的錯誤。我將送出一份錯誤報告以修復該問題,但它不會使 CPU 離線工作 - 它只會改進錯誤消息,因此它會顯示“此客戶作業系統不支持 CPU 離線”。

引用自:https://serverfault.com/questions/840975