写点什么

dpdk 中,如何建立 portid/queue 的配置和逻辑核心的关系

作者:linux大本营
  • 2023-04-26
    湖南
  • 本文字数:728 字

    阅读完需:约 2 分钟

在 DPDK 中,可以通过配置文件或者命令行参数来建立 portid/queue 的配置和逻辑核心的关系。


  1. 配置文件方式:


在 DPDK 的配置文件(通常是/etc/dpdk/dpdk.conf)中,可以使用以下格式来配置 portid/queue 和逻辑核心的关系:


[ethdev]port-topology=loopport-numa-config=0:0-3;1:4-7
复制代码


其中,port-topology 指定了端口的拓扑结构,可以是 loop(环形结构)或者 daisy(菊花链结构);port-numa-config 指定了每个端口的队列应该绑定到哪些 NUMA 节点上的逻辑核心上。


  1. 命令行参数方式:


在启动 DPDK 应用程序时,可以使用以下命令行参数来配置 portid/queue 和逻辑核心的关系:


-l <corelist> --vdev=<driver>,<args>
复制代码


其中,-l 指定了应用程序应该使用哪些逻辑核心,可以是单个逻辑核心的编号,也可以是一个逗号分隔的逻辑核心列表;--vdev 指定了应用程序应该使用哪些虚拟设备,可以是一个或多个虚拟设备的驱动程序和参数。


例如,以下命令行参数将 DPDK 应用程序绑定到逻辑核心 0 和 1,并使用一个 virtio 网卡:


-l 0,1 --vdev=net_virtio_user0,path=/tmp/virtio0
复制代码


在应用程序中,可以使用 rte_eth_dev_configure 函数来配置每个端口的队列和逻辑核心的关系。例如,以下代码将第一个端口的第一个队列绑定到逻辑核心 0 上:


rte_eth_dev_configure(0, 1, 1, &port_conf);rte_eth_dev_socket_id(0); // 获取第一个端口所在的NUMA节点rte_eth_rx_queue_setup(0, 0, RX_RING_SIZE, rte_eth_dev_socket_id(0), &rx_conf, &pktmbuf_pool);rte_eth_tx_queue_setup(0, 0, TX_RING_SIZE, rte_eth_dev_socket_id(0), &tx_conf);rte_eth_dev_bind_rx_queue(0, 0, 0); // 将第一个端口的第一个队列绑定到逻辑核心0上
复制代码


相关技术视频教程:c/c++ linux服务器开发/后台架构师免费学习地址

c/c++后端技术交流群:579733396

用户头像

还未添加个人签名 2020-11-26 加入

C/C++linux服务器开发群 812855908

评论

发布
暂无评论
dpdk中,如何建立portid/queue的配置和逻辑核心的关系_队列_linux大本营_InfoQ写作社区