我正在将 xml libvirt config 移植到 qemu 可执行参数。简单来说,我有 .xml vm config virsh edit vm-name
,我想通过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 配置中使用这些 vCPU:
<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 我的具体任务是在 Kata-containers 运行时下运行经过 vcpu 调整的特定虚拟机,因为我想在 Docker 或 Kubernetes 下运行这样的虚拟机。所以我需要修补 kata-runtime。Kata-runtime 使用以下方式运行 qemu-kvm 虚拟机英特尔 GoVmm它只能使用命令行参数运行 qemu 二进制文件。目前,我正在修补 govmm 以满足我的特定需求。Intel govmm 不使用 libvirt。
答案1
这些设置是使用 cgroups 而不是 qemu 选项设置的。您可以使用cpuset
cgroup 子系统来实现它。您可以通过运行从正在运行的 qemu 进程中获取 cgroup 设置cat /proc/<qemu pid>/cgroups
。