我正在将 xml libvirt 配置移植到 qemu 可执行参数。简单地说,我有 .xml vm 配置,我想通过使用特殊的命令行参数virsh edit vm-name
执行来运行同一台 vm 机器。qemu-system-x86_64
死于我无法使用的特定需求libvirt
。问题是 .xml vm config 使用来自主机的特殊 cpu 映射:
<cputune>
<vcpupin vcpu='1' cpuset='3'/>
<vcpupin vcpu='0' cpuset='0-2'/>
<emulatorpin cpuset='0-2'/>
</cputune>
然后在 cpu numa config 中使用这些 vcpus:
<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
但我不知道如何为/usr/bin/qemu-system-x86_64
. 那就是问题所在。有任何想法吗?
PS 我的具体任务是在 Kata-containers 运行时运行带有 vcpu 调优的特定 vm,因为我想在 Docker 或 Kubernetes 下运行这样的 vm。所以我需要修补 kata-runtime。Kata-runtime 使用Intel GoVmm运行 qemu-kvm vms ,它只能使用命令行参数运行 qemu 二进制文件。目前我正在修补 govmm 以满足我的特定需求。Intel govmm 不使用 libvirt。
这些设置是使用 cgroups 而不是 qemu 选项设置的。
cpuset
您可以使用cgroup 子系统来实现它。您可以通过运行 qemu 进程获取 cgroup 设置cat /proc/<qemu pid>/cgroups
。另见: http: //man7.org/linux/man-pages/man7/cpuset.7.html