DPDK是网络层,硬件终端->放弃中断流程
DPDK是用户层通过设备映射获取数据包->进入用户层协议栈->逻辑层->业务层;
DPDK核心技术:
- 将协议栈从内核中搬到用户态,利用UIO技术直接将设备数据映射拷贝到用户态;
- 利用大页技术,降低TLB cache miss,提高TLB访问命中率(Translation Lookaside Buffer,专门用于改进虚拟地址到物理地址转换速度的缓存)
- 通过CPU亲和性,绑定网卡、线程固定到core,减少CPU切换开销
- 通过无锁队列,减少资源的竞争
DPDK的优点:
- 减少中断次数
- 减少内存拷贝次数
- 绕开Linux内核协议栈,用户获得协议栈的控制权,能够定制化协议栈以降低复杂度;
DPDK的缺点:
- 协议栈从内核中搬到用户态,增加了开发成本
- 低负荷服务器不适用,会造成CPU空转
RDMA
网卡硬件收发包并进行协议栈封装和解析,然后将数据存放到指定内存地址,而不需要CPU干预。
RDMA核心技术:
协议栈卸载到硬件(协议栈硬件offload)