Я портирую конфигурацию xml libvirt на исполняемые аргументы qemu. Просто у меня есть конфиг .xml vm от virsh edit vm-name
и я хочу запустить ту же машину vm, выполнив qemu-system-x86_64
со специальными параметрами командной строки. Умереть в соответствии с моими потребностями, я не могу использовать libvirt
. Проблема в том, что конфигурация .xml vm использует специальное сопоставление процессора с хост-машины:
<cputune>
<vcpupin vcpu='1' cpuset='3'/>
<vcpupin vcpu='0' cpuset='0-2'/>
<emulatorpin cpuset='0-2'/>
</cputune>
а затем использует эти vcpus в конфигурации cpu numa:
<cpu>
<numa>
<cell cpus='0' memory='2097152'/>
<cell cpus='1' memory='2097152'/>
</numa>
</cpu>
Я отображаю конфигурацию numa следующим образом: /usr/bin/qemu-system-x86_64 -numa node,nodeid=0,cpus=0,mem=2048 -numa node,nodeid=1,cpus=1,mem=2048
но я не знаю, как указать конфигурацию vcpu для /usr/bin/qemu-system-x86_64
. Это проблема. Любые идеи?
PS Моя конкретная задача - запустить конкретную виртуальную машину с настройкой vcpu во время выполнения Kata-контейнеров, потому что я хочу запустить такую виртуальную машину под Docker или Kubernetes. Поэтому мне нужно исправить kata-runtime. Kata-runtime запускает vms qemu-kvm, используя Intel GoVmm который может запускать двоичный файл qemu только с параметрами командной строки. На данный момент я исправляю govmm под свои нужды. Intel govmm не использует libvirt.
Эти настройки устанавливаются с помощью cgroups, а не параметров qemu. Вы можете добиться этого, используя cpuset
Подсистема cgroup. Вы можете получить настройки cgroup, запустив процесс qemu, запустив cat /proc/<qemu pid>/cgroups
.
Смотрите также: http://man7.org/linux/man-pages/man7/cpuset.7.html