@DPDK Memory Mange

Momery Mange管理内存方式

内存分配

  1. 判断要分配的内存大小是否超出允许的范围(由DPDK配置文件中指定),如果超出则返回NULL。
  2. 判断是否要使用DPDK的hugepage内存,如果需要,则调用rte_memzone_reserve函数预留内存,并返回其指针。
  3. 如果不需要使用hugepage内存,则从内存池中获取内存块。内存池由DPDK在初始化时创建。
  4. 如果内存池中无可用的内存块,则创建一个新的内存块,并加入到内存池中。
  5. 为了提高内存的利用率,在分配内存时会先判断是否有足够的连续空间可供使用。如果有,则直接使用该空间;如果没有,则会将整个内存池中的所有内存块整理一遍,以找到足够的连续空间。
  6. 如果内存块的数量达到一定阈值(由DPDK配置文件中指定),则不再创建新的内存块,而是将多余的内存块释放回系统。
  7. 返回分配到的内存块的指针

内存释放

1, 将要进行释放的busy malloc_elem的状态标记为free
2, 检查有没有在内存上并且也是free的malloc_elem, 存在的话就合并为一个大的free malloc, 然后加入到合适的free链表的头部。
3, 检查能否归还向OS申请的额外内存,如果可以的话,就将其归还给OS(通过 eal_memalloc_free_seg_bulk() 归还)。

使用场景

dpdk(Data Plane Development Kit)的Memory Manager组件主要用于高效管理和使用系统内存,可用于以下场景:

1. 网络数据包处理

:在网络应用中,需要处理大量的数据包,而Memory Manager可以大幅提高内存效率,从而提升整个网络应用的性能。

2. 存储系统

存储系统需要高效的内存管理,以达到更快的数据访问速度和更高的可扩展性。
我们还可以使用DPDK技术实现用户态下的存储设备驱动, 最大限度地减少内存拷贝和延时,提高数据吞吐量。
网络存 储系统可以使用DPDK技术来实现用户态的网络驱动,以避免内核和用 户态之间由于数据拷贝所带来的开销。
这样,就正好解决了网络存储中 的“网络部分”的性能瓶颈。
除此以外,DPDK也可以用来实现用户态的 存储驱动来解决用户态数据到具体存储设备的开销。

3. 虚拟化:

在虚拟化场景中,Memory Manager可以帮助虚拟化平台更好地管理和分配内存资源,以提高虚拟化性能。
在虚拟化中,Memory Manage组件可以用于以下几个方面:

  1. 跨NUMA优化: 在虚拟化中,物理机上的不同虚拟机通常会分配到不同的NUMA节点上,而NUMA节点之间的内存带宽是有限的。Memory Manage组件可以通过将内存分配到相应的NUMA节点上,提高数据包处理性能。

  2. 隔离虚拟机内存: 在虚拟化中,不同的虚拟机共享同一台物理机的内存,为了避免虚拟机之间发生干扰而导致性能下降,可以使用Memory Manage组件对虚拟机内存进行隔离,保证每个虚拟机可以独立使用自己的内存,提高数据包处理的稳定性和可靠性。

  3. 动态内存分配: 在虚拟化中,虚拟机的资源需求可能会不断变化,需要动态调整内存大小。Memory Manage组件可以提供动态内存分配的功能,根据虚拟机的需求动态分配内存,保证虚拟机始终可以得到所需的资源。

总的来说,DPDK的Memory Manage组件可以提供针对虚拟化环境的内存管理功能,通过优化内存的分配和使用,提高数据包处理性能和稳定性,为虚拟化提供了重要的支持。

4. 大规模集群:

在云计算、大数据等场景中,需要处理大规模的数据,而Memory Manager可以优化内存的分配和管理,提高数据处理效率和系统性能。

dpdk Memory Mange相关推荐

  1. DPDK EAL parameters(DPDK环境抽象层参数)-原始版本(F-Stack配置文件的配置参数)

    目录 7. EAL parameters 7.1. Common EAL parameters 7.1.1. Lcore-related options 7.1.2. Device-related o ...

  2. DPDK EAL parameters(DPDK环境抽象层参数)-MD版本(F-Stack配置文件的配置参数)

    整理自 EAL parameters This document contains a list of all EAL parameters. These parameters can be used ...

  3. dpdk内存管理分析

    dpdk内存管理分析 文章目录 dpdk内存管理分析 1.1 简述 1.2 `rte_config_init`分析 1.3 `eal_hugepage_info_init`的分析 1.4 `rte_e ...

  4. dpdk内存管理——内存初始化

    *说明:本系列博文源代码均来自dpdk17.02* 1.1内存初始化 1.1.1 hugepage技术 hugepage(2M/1G..)相对于普通的page(4K)来说有几个特点: (1) huge ...

  5. 《深入浅出DPDK》读书笔记(三):NUMA - Non Uniform Memory Architecture 非统一内存架构

    本文内容为读书笔记,摘自<深入浅出DPDK>. 47.NUMA系统 之前的章节已经简要介绍过NUMA系统,它是一种多处理器环境下设计的计算机内存结构.NUMA系统是从SMP(Symmetr ...

  6. l3fwd 是什么_服务器DPDK l3fwd性能测试

    1.测试背景 由于项目中需要用到dpdk,当时在服务器平台选型上有如下2种不同配置可供选择,为了理解老的Xeon处理器和Xeon金牌处理器对DPDK转发性能的影响,需要在两台服务器上分别进行DPDK ...

  7. DPDK架构与特点(转)

    from:http://www.cnblogs.com/mylinuxer/p/4277676.html DPDK架构与特点 当年在某公司实习的时候,当时老大给了我一份DPDK的文档,说是将来很有用, ...

  8. DPDK — 网卡初始化流程(Intel 82599 ixgbe 网卡驱动示例)

    目录 文章目录 目录 总览 rte_eth_dev/rte_eth_dev_data 数据结构 rte_eth_dev_count 函数 rte_eth_dev_configure 函数 ixgbe_ ...

  9. DPDK — DPDK APP 的指令行参数

    目录 文章目录 目录 Lcore-related options(逻辑线程相关参数) Device-related options(设备相关参数) Multiprocessing-related op ...

最新文章

  1. postman 接口测试工具介绍
  2. 个人--变成星星的孩子
  3. 基于koa2操作mysql封装例子
  4. python函数整理
  5. 如何搭建一个完整的手机直播系统源码?
  6. Tensorflow2.x.x最基础的神经网络(ANN)
  7. SLAM学习--2D激光SLAM--入门学习
  8. 手把手教你部署VSAN见证虚拟设备 (Cormac)
  9. Ext js tabpanel的使用
  10. 【bzoj1704】[Usaco2007 Mar]Face The Right Way 自动转身机 贪心
  11. Q91:真实地模拟透明材质(Realistic Transparency)(4)——Fish Bowl
  12. python2.7对DICOM图像的读取
  13. 关系型数据库(八),数据库其他面试题
  14. Spring Cloud (6)config 客户端配置 与GitHub通信
  15. CSS半透明磨砂效果实现
  16. Windows安装Oracle与PlSql教程
  17. 微信ubuntu版服务器,Ubuntu 18.04 安装微信(Linux通用)
  18. Matlab UIAxes中添加图例
  19. vue扫码下载app,并区分安卓和ios
  20. (五)Kotlin简单易学 基础语法-初始函数(下)

热门文章

  1. DataFrame基础知识
  2. TD Target Algorithms
  3. 漫谈Hadoop的思想之源:Google
  4. JDK8至JDK 11 新增常用API总结<二>
  5. 计算机等级考试EXCEL中如何运用函数快速统计及格人数
  6. 深圳一日游攻略农家乐团建聚会自驾游好去处
  7. /usr/lib/hpux32/dld.so: Unable to find library ‘libintl.so‘
  8. 自建CA证书以及导入到浏览器实现https安全连接
  9. 直播视频app源码文本添加渐变色
  10. 速卖通描述 html,全球速卖通考试试题