DPDK-mempool(3)

DPDK-mempool 系列文章目录

第一章: 第一章 Linux内存池基础储备
第二章: 研究分析DPDK内存池



前言

内存池该概念
内存池是固定大小的对象分配器。 在DPDK中,它由名称唯一标识,并且使用mempool操作来存储空闲对象。 默认的mempool操作是基于ring的。它提供了一些可选的服务,如per-core缓存和对齐帮助,以确保对象被填充, 方便将他们均匀扩展到DRAM或DDR3通道上。


提示:以下是本篇文章正文内容,下面案例可供参考

一、本地缓存?

在CPU使用率方面,由于每个访问需要compare-and-set (CAS)操作,所以多核访问内存池的空闲缓冲区成本比较高。 为了避免对内存池ring的访问请求太多,内存池分配器可以维护per-core cache,并通过实际内存池中具有较少锁定的缓存对内存池ring执行批量请求。 通过这种方式,每个core都可以访问自己空闲对象的缓存(带锁), 只有当缓存填充时,内核才需要将某些空闲对象重新放回到缓冲池ring,或者当缓存空时,从缓冲池中获取更多对象

虽然这意味着一些buffer可能在某些core的缓存上处于空闲状态,但是core可以无锁访问其自己的缓存提供了性能上的提升。

缓存由一个小型的per-core表及其长度组成。可以在创建池时启用/禁用此缓存。

缓存大小的最大值是静态配置,并在编译时定义的(CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE)。
在这里插入图片描述
不同于per-lcore内部缓存,应用程序可以通过接口 rte_mempool_cache_create() , rte_mempool_cache_free() 和 rte_mempool_cache_flush( 创建和管理外部缓存。 这些用户拥有的缓存可以被显式传递给 rte_mempool_generic_put() 和 rte_mempool_generic_get() 。 接口 rte_mempool_default_cache() 返回默认内部缓存。 与默认缓存相反,用户拥有的高速缓存可以由非EAL线程使用。

二、Mempool Handlers

这允许外部存储子系统,如外部硬件存储管理系统和软件存储管理与DPDK一起使用。

mempool 操作包括两方面:

添加新的mempool操作代码。这是通过添加mempool ops代码,并使用 MEMPOOL_REGISTER_OPS 宏来实现的。 使用新的API调用 rte_mempool_create_empty() 及 rte_mempool_set_ops_byname() 用于创建新的mempool,并制定用户要使用的操作。 在同一个应用程序中可能会使用几个不同的mempool处理。 可以使用 rte_mempool_create_empty() 创建一个新的mempool,然后用 rte_mempool_set_ops_byname() 将mempool指向相关的 mempool处理回调(ops)结构体。

传统的应用程序可能会继续使用旧的 rte_mempool_create() API调用,它默认使用基于ring的mempool处理。 这些应用程序需要修改为新的mempool处理。

对于使用 rte_pktmbuf_create() 的应用程序,有一个配置设置(RTE_MBUF_DEFAULT_MEMPOOL_OPS),允许应用程序使用另一个mempool处理。
在这里插入图片描述

用例

All allocations that require a high level of performance should use a pool-based memory allocator. Below are some examples:

  • Mbuf Library Environment
  • Abstraction Layer , for logging service
  • Any application that needs to allocate fixed-sized objects in the data plane and that will be continuously utilized by the system.(任何需要在程序中分配固定大小对象,并将被系统持续使用的应用程序)

参考

参考
DPDK 官网
dpdk mempool cache 机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

技术鱼

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值