绑定qemu进程至物理CPU
概述
qemu主进程绑定特性是将qemu主进程绑定到特定的物理CPU范围内,从而保证了运行不同业务的虚拟机不会干扰到邻位虚拟机。例如在一个典型的云计算场景中,一台物理机上会运行多台虚拟机,而每台虚拟机的业务不同,造成了不同程度的资源占用,为了避免存储IO密集的虚拟机对邻位虚拟机的干扰,需要将不同虚拟机处理IO的存储进程完全隔离,由于qemu主进程是处理前后端的主要服务进程,故需要实现隔离。
操作步骤
通过virsh emulatorpin命令可以绑定qemu主进程到物理CPU。
查看qemu进程当前绑定的物理CPU范围:
# virsh emulatorpin openEulerVM
emulator: CPU Affinity
----------------------------------
*: 0-63
这说明虚拟机openEulerVM对应的qemu主进程可以在主机的所有物理CPU上调度。
在线绑定:修改处于running状态的虚拟机对应的qemu进程的绑定关系,使用带—live参数的vcpu emulatorpin命令:
# virsh emulatorpin openEulerVM --live 2-3
# virsh emulatorpin openEulerVM
emulator: CPU Affinity
----------------------------------
*: 2-3
以上命令把虚拟机openEulerVM对应的qemu进程绑定到物理CPU2、3上,即限制了qemu进程只在这两个物理CPU上调度。这一绑定关系的调整立即生效,但在虚拟机关机并重新启动后失效。
持久化绑定:在libvirt内部配置中修改虚拟机对应的qemu进程的绑定关系,使用带—config参数的virsh emulatorpin命令:
# virsh emulatorpin openEulerVM --config 0-3,^1
# virsh emulatorpin euler
emulator: CPU Affinity
----------------------------------
*: 0,2-3
以上命令把虚拟机openEulerVM对应的qemu进程绑定到物理CPU0、2、3上,即限制了qemu进程只在这三个物理CPU上调度。这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效。