多进程 QEMU

本文介绍多进程 QEMU 的配置和使用。设计文档见 docs/devel/multi-process.rst。

1)配置

启用 KVM 的目标默认启用多进程支持。

2)使用

多进程 QEMU 需要编排程序启动。

启动 mpqemu 的命令行工作方式如下。

  • 编排程序:

    • 创建 Unix 套接字对。

    • 启动远程进程,通过命令行传入其中一个套接字。

    • 再启动 QEMU,将另一套接字作为代理设备对象的选项。

  • 远程进程:

    • QEMU 通过 remote 机器选项进入远程进程模式。

    • 编排程序创建 remote-object,提供设备详情及设备文件描述符。

    • 其他选项与正常启动带设备的 QEMU 无异。

    • 远程进程命令行示例:

      /usr/bin/qemu-system-x86_64 -machine x-remote -device lsi53c895a,id=lsi0 -drive id=drive_image2,file=/build/ol7-nvme-test-1.qcow2 -device scsi-hd,id=drive2,drive=drive_image2,bus=lsi0.0,scsi-id=0 -object x-remote-object,id=robj1,devid=lsi0,fd=4,

  • QEMU:

    • 部分 RAM 在 QEMU 与远程进程间共享,因此需要 memory-backend-memfd:

      -object memory-backend-memfd,id=mem,size=2G

    • 远程进程中模拟的每个 PCI 设备,都创建一个 x-pci-proxy-dev。socket 子选项指定编排程序创建通道的另一端。必须设置 id,且与远程 PCI 设备 的 id 相同。

    • QEMU 命令行示例:

      -device x-pci-proxy-dev,id=lsi0,socket=3