У меня Ubuntu 16.04 в качестве хоста и Windows Server 2012 в качестве гостя, установленного с использованием драйверов Virtio в KVM. Я могу увеличить CPU во время работы гостя, но не могу уменьшить CPU. Максимальное количество ЦП, назначенных гостю, равно 20. Я назначил 10 ЦП при запуске гостя и пытаюсь выполнить следующую команду, чтобы уменьшить ЦП до 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
}
]
}
Однако результат имеет только два параметра: «онлайн» и «логический идентификатор». Однако я бы хотел, чтобы гость тоже возвращал значение can-offline.
Я установил QEMU версии 2.5 и последние версии драйверов virtio 0.1.126 и libvirtd версии 1.3.1.
Команда hotplug, которую вы пытаетесь запустить, требует, чтобы гостевой агент сотрудничал для завершения действия отключения. На самом деле он вообще не выполняет отключение - он просто просит гостевую ОС пометить vCPU как отключенный. К сожалению, поддержка этого реализована только в версии гостевого агента QEMU для Linux. Даже в последней версии QEMU 2.9.0 гостевой агент не может отключать ЦП в гостевых системах Windows.
Сообщение об ошибке, которое вы получаете, бесполезно и фактически указывает на ошибку в гостевом агенте QEMU. Я отправлю отчет об ошибке, чтобы исправить это, но это не заставит ЦП работать в автономном режиме - это просто улучшит сообщение об ошибке, в котором говорится: «ЦП в автономном режиме не поддерживается в этой гостевой ОС».