首页 > 编程语言 >在qemu中绑定pci bus到numa node

在qemu中绑定pci bus到numa node

时间:2024-04-29 14:15:51浏览次数:16  
标签:node bus pcie pci numa pxb port

在多numa node的物理机中,pci bus常常是连接到其中一个numa上。如此,不同的numa节点访问该pci bus下的设备的访问速度是不同的。基于此常常要将访问该设备的负载绑定到对应的numa node上可以提供性能。

对于qemu虚拟机也可以模拟pci bus与numa之间的亲和性。在x86机器中,只有pxb和pxb-pcie总线支持设置numa节点。其中pxb只能在i440fxx上使用,pxb-pcie可以在q35中使用。对于pcie总线:

pxb-pcie是挂在pcie.0上的,表示另一根主桥。下面是一个示例:

qemu-system-x86_64 --enable-kvm -M q35 \
        -monitor unix:qemu-monitor-socket,server,nowait \
        -serial mon:stdio \
        -m 10G \
        -smp 16,maxcpus=20 \
        -boot a \
        -object memory-backend-ram,id=ram-node0,size=5G,host-nodes=2,policy=bind \
        -numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \
        -object memory-backend-ram,id=ram-node1,size=5G,host-nodes=3,policy=bind \
        -numa node,nodeid=1,cpus=8-15,memdev=ram-node1 \
        -device pxb-pcie,id=pcie.1,bus=pcie.0,addr=0x3,numa_node=0,bus_nr=5 \
        -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.1,multifunction=on,addr=0x2 \
        -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.1,addr=0x2.0x1 \
        -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.1,addr=0x2.0x2 \
        -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.1,addr=0x2.0x3 \
        -device pcie-root-port,port=0x13,chassis=5,id=pci.5,bus=pcie.1,addr=0x2.0x4 \
        -device pcie-pci-bridge,id=pcie-pci-br0,bus=pcie.1 \
        -device virtio-blk-pci,scsi=off,bus=pcie-pci-br0,addr=0x1,drive=hd1,id=virtio-disk0,bootindex=1 \
        -drive if=none,file=jammy-server-cloudimg-amd64.img,id=hd1 \

在上例中,pxb-pcie挂在pcie.0上,设备不能直接挂在pxb上,必须先创建pci bridge或者pcie root port,然后将设备挂在pci桥或者pcie root port上。在pxb-pcie的参数中有一项是我们关心的,那就是numa_node。设置了这个就可以在guest中看到pxb下面的桥和设备跟numa的连接关系。

虚拟机起来后,我们可以使用lstopo看pci和numa的关系。

# lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:03.0 Host bridge: Red Hat, Inc. QEMU PCIe Expander bridge
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
05:00.0 PCI bridge: Red Hat, Inc. Device 000e
05:02.0 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
05:02.1 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
05:02.2 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
05:02.3 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
05:02.4 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
06:01.0 SCSI storage controller: Red Hat, Inc. Virtio block device
08:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device (rev 01)
09:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device (rev 01)
0a:00.0 Unclassified device [00ff]: Red Hat, Inc. Virtio RNG (rev 01)
0b:00.0 Ethernet controller: Red Hat, Inc. Virtio network device (rev 01)

lstopo

可以看到pxb-pcie下面的设备都连接到了numa0,跟设置是一致的。

这里有一个疑问,虽然pxb-pcie下面的桥和设备都连接到了numa0,但是pxb-pcie本身却没有任何numa信息。pcie.0主桥没办法连接到numa 节点,在guest kernel启动中报了warning:

[    0.815158] PCI host bridge to bus 0000:00
[    0.816043] pci_bus 0000:00: Unknown NUMA node; performance will be reduced

 

标签:node,bus,pcie,pci,numa,pxb,port
From: https://www.cnblogs.com/banshanjushi/p/18165593

相关文章

  • Pod monitoring of Nodejs
    一、Nodejs添加接口1、nextjs用法安装包prom-client,在ping同一目录层级创建接口api/ssr/metrics比如首页https://mik.dev.platform.michaels.com/api/ssr/metricsdc项目https://mik.dev.platform.michaels.com/api/ssr/dc/metrics import{register,collectDefaultMetri......
  • dremio The source [xxxx] is currently unavailable. Metadata is not accessible; p
    最近在dremio25.0版本碰到了一些问题,以下说明下原因以及处理问题现象问题实际上此问题是执行节点报的错误,并不是协调节点的,早期一直以为是协调节点的,结果通过分析调试发现是协调节点报的错误Thesource[xxxx]iscurrentlyunavailable.Metadataisnotaccess......
  • modbus怎么写多个保持寄存器
    近期,在做项目的时候,用到了modbus协议,有一个校时功能,就是需要定时发送时间到相应的设备,给相应的设备校时,协议里给出了寄存器地址和数据格式,如下 这个在程序里就需要写多个连续的保持寄存器,报文格式如下:串口modbus报文格式1110132700040818041C0F0423F0F04ED8......
  • Modbus转Profinet网关连接打印设备与PLC通讯
      Modbus转Profinet网关(XD-MDPN100)是一种能够实现Modbus协议和Profinet协议之间转换的设备。Modbus转Profinet网关可提供单个或多个RS485接口,使得不同设备之间可以顺利进行通信。当我们需要连接打印设备与PLC进行通讯时,Modbus转Profinet网关可以将打印设备与PLC之间建立起稳定......
  • Modbus转Profinet网关连接传感器与PLC通讯
    Modbus转Profinet网关(XD-MDPN100/300)是用于将Modbus协议和Profinet协议进行转换并进行通讯的设备。Modbus转Profinet网关可以实现Modbus和Profinet协议之间的相互转换,并自带网口和串口,既可实现协议的相互转换,也可实现接口的相互转换。当使用Modbus转Profinet网关连接传感器与PLC......
  • vue3项目打包的时候报错'openBlock' is not exported by node_modules/...
    用了一个手写签名的,开发环境中一切正常,但是在打包发布的时候,就报错了。'openBlock'isnotexportedbynode_modules/vue-esign/node_modules/vue/dist/vue.runtime.esm.js.... 这个应该是vue版本重复导致的。 解决:在vite.config.ts中加入 dedupe:['vue'],  dedupe是......
  • Nodejs中npm i 与npm ci的区别
    npmci与npmi主要有以下的区别:1.依赖的package不同#npmi依赖package.json#npmci依赖package-lock.json当package-lock.json中的依赖于package.json不一致时,npmci退出但不会修改package-lock.json。2.安装特点差异'''npmci只可以一次性的安装整个项目依赖,但无......
  • 采集记录仪设计方案:926-基于PCIe的40Gbps光纤采集记录仪
    基于PCIe的40Gbps光纤采集记录仪   ORI-D2000信号记录仪是一款便携式记录仪产品,满足高达40GBps的数据存储速度、可扩展的大容量存储设备和配套的录取存储管理软件。主要特点  1、基本系统内存64GB,存储容量为7.6T,可扩展至四个盘位。  2、包含一张FPG......
  • 通过宝塔部署node后端项目
    1.购买服务器和安装环境请移步https://blog.csdn.net/2301_79204074有详细的服务器白嫖教程2.通过远程连接服务器打开宝塔面板通过以下命令可以找到宝塔登录地址和密码btdefault登陆宝塔之后在软件商店安装PM2,软件会把npm,nvm和pm2都进行自动安装安装完成之后需要在终端......
  • 电子商务平台(E-Business Platform)
    电子商务平台信息如下:一、中英文名称中文名称:电子商务平台英文名称:E-BusinessPlatform或E-CommercePlatform二、定义电子商务平台是为企业或个人提供网上交易洽谈的平台。它是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境,协调、整合信息流......