绘制 FreeB­SD 内存碎片化 | Alexander Leidinger

主要观点:作者偶然发现 Bojan Novković 关于物理内存抗碎片机制的工作,为展示内存碎片情况,通过编写脚本生成数据和图形,展示了不同时间 FreeBSD-current 系统下的内存碎片情况及相关修复措施的效果。
关键信息

  • 初始写的是 UMA 桶,实际是关于页面分配器空闲列表,UMA 桶是类型/结构特定的分配列表,页面分配器空闲列表是大小特定的分配列表。
  • 有获取 FMFI 统计的 cron-job 脚本和生成 CSV 的 awk 脚本,以及用于绘图的 gnuplot 模板和生成绘图脚本的小脚本。
  • 在 2 插槽、6 核加超线程的 Intel Xeon 系统上运行多天的结果,不同图形代表不同重启后的情况,不能直接比较不同图形。
  • Bojan 的提交可防止内核栈保护页周围的一些内存碎片,对某些空闲列表大小有改善效果,作者还将尝试其他相关审查。
    重要细节
  • cron-job 脚本收集 FMFI 统计并创建带有格式化启动时间的日志文件,awk 脚本生成 CSV 数据。
  • gnuplot 模板设置绘图参数,包括终端类型、输出文件名、标题、坐标轴标签等,通过 splot 命令绘制多条曲线。
  • 不同图形展示了不同时间 FreeBSD-current 系统下的内存碎片情况,如最初 UMA 桶空闲列表大小 0 分配容易无碎片,大小 1 已有较多碎片等。
  • 后续图形显示 Bojan 的修复对某些空闲列表大小有改善,如大小 1 保持良好形状到一定大小等,还将尝试其他相关审查。
阅读 11
0 条评论