libvirt cputune 配置如何进入 qemu-kvm

libvirt cputune 配置如何进入 qemu-kvm

我正在将 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 选项设置的。您可以使用cpusetcgroup 子系统来实现它。您可以通过运行从正在运行的 qemu 进程中获取 cgroup 设置cat /proc/<qemu pid>/cgroups

也可以看看:http://man7.org/linux/man-pages/man7/cpuset.7.html

相关内容