减lessCPU分配到正在运行的客户端Windows服务器

我使用Ubuntu 16.04作为主机和Windows Server 2012作为使用KVM中的Virtio驱动程序安装的guest虚拟机。 我能够增加客户端运行时的CPU,但我不能减lessCPU的。 分配给客户端的最大CPU数为20.我在客户端启动时分配了10个CPU,我试图执行以下命令将CPU减less到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 } ] } 

结果然而只有两个参数“在线”和“逻辑ID”。 不过,我希望客人也可以返回值“can-offline”。

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

您尝试运行的hotplug命令需要guest代理进行合作才能完成拔出操作。 实际上,它实际上并不是在根本上拔下插头 – 它只是要求来宾操作系统将vCPU标记为离线。 不幸的是,仅在QEMU客人代理的Linux版本中才实现对此的支持。 即使在QEMU的最新版本2.9.0中,guest代理程序也不能在Windows guest虚拟机中离线执行CPU。

你得到的错误信息是相当无益的,事实上在QEMU客人代理中显示一个错误。 我将提交一个错误报告来解决这个问题,但是它不会让CPU脱机工作 – 它只是改善错误信息,所以它会提示“在这个客户操作系统中不支持CPU离线”。