1. 什么式内存分配以及内存碎片

内存分配是虚拟内存分配vma,虚拟内存在内核是一个连续的空间(这里内核只是管理vma的其实地址和结束地址,所以占用很小)。在运行过程中mmap时,由于虚拟内存各个线程式共享的,所以分配vma会加锁,在多线程中表现不佳。第二,在长期运行过程中,vma导致碎片会,在分配中,查找vma可用gap的时间可能很长,最坏时间时o(n),  同时也会引起vma红黑树的深度增加,查找,删除,增加时长增加。所以减少内存碎片在提高性能和内存利用率十分重要。 同时由于碎片导致页表项变大,tlb miss概率变大,导致内存访问速度降低。

2. 减少内存碎片

ptmalloc和jemalloc内存管理器通常的解决思路:自己管理内存,根据分配的内存大小,把管理器分成阶梯大小的内存管理器,比如2,4,8,...字节进行管理,分配的时候,按照best-fit在对应的阶段块分配内存,这样做的好处基本减少了内存碎片,而且是个通用的管理内存方法,但是内存利用率相对较低。

slab的解决思路:在内核中,内存分配基本是一样的,比如各类文件系统的分配,大小相同,opt成员大部分一样。使用malloc的思路可以解决内存碎片问题,但是初始化成本很高。slab利用专有的这类场景,管理自身的缓存池,避免成员大量重复的初始化。

附录:

1. mmap源码分析 mmap内核源码分析,基于内核版本3.10(二)_SweeNeil-CSDN博客

2. malloc内存管理 内存优化总结:ptmalloc、tcmalloc和jemalloc | bhpike65

3. slab管理器 linux内存管理之slab机制_Mark~J的博客-CSDN博客_linux slab机制

如何减少linux内存碎片相关推荐

  1. Linux内存碎片化

    Linux内存碎片化主要由于内存的分配和释放不均匀导致,会降低内存利用效率.可以通过以下方法对Linux内存进行碎片整理: 执行sync命令:该命令会强制将内存中的脏数据写回磁盘,释放内存.这可以腾出 ...

  2. 图文深度解析Linux内存碎片整理实现机制以及源码

    图文深度解析Linux内存碎片整理实现机制以及源码. 物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外).申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的.随着系统运行 ...

  3. 减少Linux 电耗 转自IBM

    减少 Linux 电耗,第 1 部分: CPUfreq 子系统 http://www.ibm.com/developerworks/cn/linux/l-cpufreq-1/ 减少 Linux 耗电, ...

  4. 关于linux 内存碎片指数

    linux针对每一个node的每个zone的每个order,都有一个碎片指数来描述当前的碎片程度,也就是 extfrag_index 参数: extfrag_index这个要展示出来,需要内核编译了两 ...

  5. 一篇图解Linux内存碎片整理

    我们知道物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外).申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的.随着系统运行时间变长后,将会出现以下情况: 要解决这个问题 ...

  6. 减少 Linux 电耗,第 1 部分: CPUfreq 子系统

    关于本系列 在本系列中,学习如何调优基于 Linux 的 IBM System x 服务器 的电源效率.您将了解内核调控器和它们的设置,以及如何使用它们:您还将了解经过调优的调控器对能源性能和电子商务 ...

  7. linux path减少,Linux的环境变量PATH中所带来的问题及解决方法

    Linux的环境变量PATH中所带来的问题及解决方法 发布时间:2006-01-07 10:08:27来源:红联作者:yo 本文主要讲述"."在LINUX的环境变量PATH中所带来 ...

  8. linux内存碎片malloc,linux_ptmalloc下malloc()的过程:有 ptmalloc 源码

    文章描述 本文将尽量详细地给出 ptmalloc 下调用 malloc() 进行内存分配的实现过程 __libc_malloc() 和 _int_malloc() 实际上,在glibc中没有 mall ...

  9. linux中权限减少,Linux中权限管理

    一.权限定义 1.文件权限作用的对象 owner :属主 - u group :属组 - g other :其他人 - o 2.文件的三种权限 //针对文件的权限 r 可读 可以使用cat命令查看文件 ...

  10. 减少 Linux 电耗

    第 1 部分: CPUfreq 子系统 http://www.ibm.com/developerworks/cn/linux/l-cpufreq-1/index.html 第 2 部分: 一般设置和与 ...

最新文章

  1. 解决pytorch-gpu 安装失败方案
  2. DataNumen RAR Repair中文版
  3. python 调用c++
  4. 西藏最大云计算数据中心明年投入试运营
  5. 记录 McAfee WebAdvisor 产生大量日志文件,卸载时一直转圈圈,成功卸载方式
  6. OpenCV摄像机videocapture camera的实例(附完整代码)
  7. 为什么byte取值-128~127??
  8. python读取扫描形成的pdf_Python利用PyPDF2库获取PDF文件总页码实例
  9. amd u盘安装linux mint,安装Linux Mint 20后需要做的13件事
  10. 硬件加密芯片的使用及适配(CC020加密芯片)
  11. 工作六年的前端开发在想什么
  12. 首都师范 博弈论 5 4 4 多人合作博弈问题 Shapley计算之财产分配问题
  13. 12312312312332
  14. AI Studio 精品项目 | 基于Few-shot Learning实现中文科学文献学科分类
  15. 如何用Python 求函数 y = sinx 在区间[0, pi/2]上的弧长
  16. 【戒焦戒躁,can win】Linux--inode
  17. [BJDCTF 2nd]燕言燕语-y1ng解析
  18. nasa birthday pictures (NASA搜索你生日当天拍摄的宇宙图片)
  19. 服务器带宽什么意思?影响带宽的因素有哪些?
  20. 阿里云PolarDB-X荣获“2022 OSCAR 尖峰开源项目及开源社区”奖

热门文章

  1. cryptoJs 前端用法
  2. NODE.JS对接验证码短信接口DEMO示例
  3. 2021双非考研408上岸南京大学计算机经验帖
  4. 手机短信注册页面h5css3+html5模板
  5. 高速PCB设计系列基础知识
  6. 2021-04-28
  7. 嵌入式Linux开发的前世与今生——基本概述
  8. itextpdf生成pdf文件(含图片)
  9. python实现搜索引擎——构建爬虫系统(二)
  10. 微信小程序|小程序自定义底部导航栏