零知识学习之DPDK与RDMA(4)—— 认识DPDK(4)

接前一篇文章:零知识学习之DPDK与RDMA(3)—— 认识DPDK(3)

本文内容参考:

Linux高性能网络详解 从DPDK、RDMA到XDP》 刘伟著 人民邮电出版社

https://blog.51cto.com/u_15301988/5181201

特此致谢!

本回继续讲解DPDK体系结构第2部分内容——轮询模式驱动。

一、认识DPDK

3. DPDK体系结构

(1)核心组件

(2)轮询模式驱动

DPDK的源码中已经包含了很多网卡的驱动程序,这些驱动程序都采用了轮询模式。

轮询模式驱动程序(poll mode driver,PMD)需要提供一系列API,用于配置设备、创建队列、发送数据包、接收数据包等。PMD直接访问接收队列和发送队列的描述符以及寄存器,无须处理任何中断(除了链路状态更新中断),即可在用户态的应用程序中快速接收、处理和发送数据包。

1)两种数据包处理模式

2)驱动程序原则

PMD应该协助上层应用达到全局目标。例如,PMD提供的接收API和发送API都要有一个参数用来表明每次最多处理多少个数据包或描述符。换一种说法,PMD需要支持burst方式,即一次性接收和发送多少个数据包。这使得使用运行到完成模式的程序可以根据具体情况,动态调整自己的收发策略。比如:

  • 以零碎的方式一次一个地接收、处理和发送数据包;
  • 接收尽可能多的数据包,然后处理所有接收到的数据包,并立即发送它们;
  • 接收给定最大数量的数据包,处理接收到的数据包并累积,最后将所有积累的数据包一次性发送出去。

3)处理器核、内存核队列之间的关系

DPDK支持NUMA 架构。当处理器核和网络接口使用本地内存时(即CPU、网卡、DDR属于同一个NUMA结点),可以获得更好的性能。因此,应该从位于本地内存的内存池中分配数据包缓存(mbuf)。

多个核不应该共享接收队列或发送队列,因为这将需要引领全局锁,从而影响性能。

4)设备配置

PMD需要提供一些API对设备进行配置,这些配置包括但不限于:

  • 重置(reset)设备为默认状态;
  • 使能或断开物理链接;
  • 初始化硬件中的数据包计数;
  • 启动/停止多播功能;
  • 使能/禁止某些硬件卸载(offload)功能,比如分片、校验等。

更多内容请看下回。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值