深入浅出DPDK学习笔记(2)——— 认识DPDK

主流包处理硬件平台

支撑包理的主流硬件平台大致可分为三个方向。
·硬件加速器 (ASIC, FPGA)
·网络处理器 (NPU)
·多核处理器 (IA multi-core Xeon 等)

初识DPDK

传统处理流程和优化

以Linux为例,传统网络设备驱动包处理的动作可以概括如下:
·数据包到达网卡设备。
·网卡设备依据配置进行DMA操作。
·网卡发送中断,唤醒处理器。
·驱动软件填充读写缓冲区数据结构。
·数据报文达到内核协议栈,进行高层处理。
·如果最终应用在用户态,数据从内核搬移到用户态。
·如果最终应用在内核态,在内核继续进行。
优化方式

  • NAPI机制:系统被中断唤醒后,尽量使用轮询的方式一次处理多个据包,直到网络再次空闲重新转入中断等待。
  • netmap:采用共享数据包池的方式,减少内核到用户空间的包复制。

DPDK最佳实践

  • 轮询,这一点很直接,可避免中断上下文切换的开销。Linux也采用该方法改进对大吞吐数据的处理,效果很好。
  • 用户态驱动,在这种工作方式下,既规避了不必要的内存拷贝又避免了系统调用。一个间接的影响在于,用户态驱动不受限于内核现有的数据格式和行为定义。对mbuf头格式的重定义、对网卡DMA操作的重新优化可以获得更好的性能。
  • 亲和性与独占,DPDK工作在用户态,线程的调度仍然依赖内核。利用线程的CPU亲和绑定的方式,特定任务可以被指定只在某个核上工作。好处是可避免线程在不同核间频繁切换,核间线程切换容易导致因cache miss和cache write back造成的大量性能损失。如果更进一步地限定某些核不参与Linux系统调度,就可能使线程独占该核,保证更多cache hit的同时,也避免了同一个核内的多任务切换开销。
  • 降低访存开销,网络数据包处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

高晓伟_Steven

相逢即是有缘,动力源于金钱。

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

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

打赏作者

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

抵扣说明:

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

余额充值