DPDK-Ring 结构学习MEMPOOL LIBRARY

本文介绍了DPDK中的内存池(Mempool)及其使用,特别是Ring结构在内存管理中的作用。内存池通过固定大小的对象分配器,提供单核本地缓存和对齐辅助方法来提高效率。DPDK的Mbuf结构存储在网络帧数据中,API包括创建、获取和释放元素。文章还提及了在L2转发应用中的使用,并提供了学习资源。
摘要由CSDN通过智能技术生成

一. 概述

内存池是固定大小对象的分配器。 在DPDK中,它通过名称标识,并使用mempool句柄存储空闲对象。默认的mempool句柄是基于环的。 它提供了一些其他可选服务,例如单核本地缓存一部分数据和一个对齐帮助器

以确保对象被填充以将它们均匀地扩展到所有DRAM或DDR3通道上。这个技术在Mbuf Library库中使用。

DPDK的内存管理与硬件关系紧密,并为应用的高效存取服务。在DPDK中,数据包的内存操作对象被抽象画为Mbuf结构,而有限的rte_mbuf结构对象则存储在内存池中。内存池使用环形缓存区来保存空闲对象。内存池在内存中的逻辑表现如下图:

当一个网络帧被网卡接收时,DPDK的网卡驱动将其存储在一个高效的环形缓冲区中,同时在Mbuf的环形缓冲区中创建一个Mbuf对象。当然,两个行为都不涉及向系统申请内存,这些内存已经在内存池被穿件时就申请好了。Mbuf对象被创建好后,网卡驱动根据分析出的帧信息将其初始化,并将其和实际帧逻辑相连。对网络帧的分析处理都集中于Mbuf,仅在必要的时候访问实际网络帧。这就是内存池的双环形缓存区结构。

为增加对Mbuf的访问效率,内存池还拥有内存通道/Rank对齐辅助方法。内存池还允许用户设置核心缓存区大小来调节环形内存块的读写频率。

实践证明,在内存对象之间补零,以确保每个对象和内存的一个通道和Rank起始处对齐,能大幅减少未命中的发生概率且增加存取效率。在L3转发和流分类应用中尤为如此。内存池以更大内存占有量的代价来支持此项技术。在创建一个内存池时,用户可选择是否启用该技术。 多核CPU访问同一个内存池或者同一个环形缓存区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值