申请试用
HOT
登录
注册
 
The Path to DPDK Speeds for AF XDP
The Path to DPDK Speeds for AF XDP

The Path to DPDK Speeds for AF XDP

阳春白雪
/
发布于
/
2634
人观看

af_xdp是一种新的套接字类型,用于在4.18中引入的原始帧(在编写本文时的下一个linux中)。当前的代码库为我们系统上的64字节数据包提供了每个应用程序核心20 mpps以北的吞吐量,但是为了进一步提高吞吐量,可以执行许多优化。本文的内容是我们需要在af_xdp中进行性能优化,以使它能够像dpdk一样快速地执行。
我们将优化分为两大类:一类是与应用程序无缝连接的优化,另一类是需要添加到uapi的优化。在第一类中,我们检查以下内容:

放宽拥有xdp程序的要求。如果用户不需要xdp程序,并且只有一个af_xdp套接字绑定到特定队列,则不需要xdp程序。这将从rx路径中截取相当多的周期。
从用户空间连接忙轮询。如果应用程序编写器正在使用epoll()和friends,则这有可能消除rx(napi)核心与应用程序核心,因为现在所有的工作都是在一个核心上完成的。应该提高许多用例的性能。在这种情况下,也许有必要重新审视线程式napi的旧思想。通过批处理优化高指令缓存使用率,例如Cisco的VPP堆栈和Edward Cree在他的网络下一个RFC“在每个阶段处理多个接收到的数据包”。

在uapi扩展类别中,我们检查以下优化:

为具有顺序tx完成的nics支持新模式。在此模式下,将不使用完成队列。相反,应用程序只需查看tx队列中的指针,以查看数据包是否已完成。在这种模式下,我们不需要在完成队列和tx队列之间设置任何backpreassure,也不需要在完成队列中填充或发布任何内容,因为它不被使用。应能显著提高有序网卡的发送性能。
介绍“类型编写器”模型,其中每个块可以包含多个数据包。这就是chelsio在其nics中的模型。但是实验表明,由于队列上的事务较少,这种模式也可以为常规nic提供更好的性能。需要在描述符的选项字段中引入新标志。

通过这些优化,我们相信可以在零拷贝模式下实现64字节数据包接近40 mpps吞吐量的目标。在最后的论文中,我们将对性能数据进行全面的分析。

0 点赞
0 收藏
1下载
相关文档
确认
3秒后跳转登录页面
去登陆