Назад | Перейти на главную страницу

как конфигурация libvirt cputune переходит в qemu-kvm

Я портирую конфигурацию 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