Intel DPDK 简介(上篇)

Intel DPDK 是一个针对IA架构的高性能网络数据面处理库,旨在绕过Linux内核,提高包处理速度。通过优化包括CPU和内存瓶颈在内的性能限制因素,DPDK实现了锁less ring队列、预分配的mempools和高效的Poll mode driver。开发者需要Linux内核、glibc等特定版本,并进行驱动加载、内存预留等步骤进行开发。DPDK库包括EAL、内存管理和PMD等核心组件,支持多种网络操作和高速数据共享。
摘要由CSDN通过智能技术生成

Overview

Intel DPDK: Intel Data Plane Development Kit

www.intel.com/go/dpdk

  • Intel 开发在IA架构上用于高性能网络数据面处理的基础库。

  • 针对IA 处理器的数据包处理性能进行了大量优化。

  • 绕过Linux内核,在应用层开发高性能网络包处理程序。

  • DPDK不是网络协议栈,不提供二层,三层转发功能,不具备防火墙ACL功能,但通过DPDK可以轻松开发出上述功能。

  • 采用BSD开源协议

Performance limitation factors

使用linux socket进行开发存在如下一些性能瓶颈:

  1. cpu瓶颈:调度,上下文切换,中断,系统调用

  2. 内存瓶颈:为每个packet分配释放内存,复杂的sk_buffer结构,

copy_from/to_user,TLB miss

  1. 冗长而非必要的内核协议栈路径

下图为sk_buffer结构:

该图是linux内核协议栈草图:

结论:标准的数据面只是用于通用环境

DPDK优化

  1. 每个应用程序线程通过Pthead亲和性绑定到特定的硬件线程。程序在该线程所在socket上分配分配内存。

  1. 重载malloc,所有内存分配基于hugepage,减少tlb miss

  2. 实现对象缓冲池mempool,对象着色,确保所有对象均匀分配到cpu cache上。

  3. 网络包结构采用mbuf。mbuf 在程序启动时预先从mempool中分配。

  4. Lockless ring队列,所有对象均采用此设计进行连接

  5. 针对Intel 网卡的Poll mode driver,无中断机制,能够高速收发报。数据包进出应用程序中实现了零拷贝。 驱动采用run-to-completion机制,数据包收发处理都在一个硬件线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值