减少正在运行的客户 Windows 服务器的 CPU 分配

减少正在运行的客户 Windows 服务器的 CPU 分配

我有 Ubuntu 16.04 作为主机,Windows Server 2012 作为客户机,使用 KVM 中的 Virtio 驱动程序安装。我能够在客户机运行时增加 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”。但是我希望客户机也返回值“can-offline”。

我已经安装了 QEMU 版本 2.5 和最新的 virtio 驱动程序版本 0.1.126 和 libvirtd 版本 1.3.1。

答案1

您尝试运行的热插拔命令需要客户机代理配合才能完成拔出操作。事实上,它实际上根本没有拔出 - 它只是要求客户机操作系统将 vCPU 标记为脱机。不幸的是,仅在 Linux 版本的 QEMU 客户机代理中实现了对此的支持。即使在最新的 2.9.0 版 QEMU 中,客户机代理也无法在 Windows 客户机中执行 CPU 脱机。

您收到的错误消息毫无帮助,实际上表明 QEMU 客户机代理中存在错误。我将提交错误报告以修复该问题,但这不会使 CPU 离线功能正常工作 - 它只会改进错误消息,使其显示“此客户机操作系统不支持 CPU 离线”。

相关内容