Facebook 的新内存管理方法

社交网络开发团队成员之一 Facebook, 罗曼·古欣,在开发者邮件列表中提出了一组 Linux内核补丁旨在通过实施新的内存管理控制器来改进内存管理 - lab(slab内存控制器).

板坯分布 是一种内存管理机制,旨在更有效地分配内存并消除大量碎片。 该算法的基础是存储包含某种类型对象的已分配内存,并在下次为相同类型的对象分配该内存时重用该内存。 这项技术首先由 Jeff Bonwick 在 SunOS 中引入,现在广泛应用于许多 Unix 操作系统的内核中,包括 FreeBSD 和 Linux。

新的控制器基于将slab记账从内存页面级别移动到内核对象级别,这使得在不同的cgroup中共享一个slab页面成为可能,而不是为每个cgroup分配单独的缓存。

根据测试结果,可以得出结论,所提出的内存管理方法允许增加 效用 使用板 45%,并且还将减少操作系统内核的整体内存消耗。 而且,通过减少分配给slab的页数,整体内存碎片也减少了,这不能不影响系统的性能。

新控制器已经在 Facebook 生产服务器上进行了几个月的测试,到目前为止,这次测试可以说是成功的:性能没有损失,错误数量没有增加,内存消耗明显减少 - 在某些服务器上服务器高达 1GB。 这个数字是相当主观的,例如,早期的测试显示结果略低:

  • Web 前端 650-700 MB
  • 带数据库缓存的服务器上 750-800 MB
  • DNS 服务器上 700 MB

>>> GitHub 上的作者页面


>>> 早期测试结果

来源: linux.org.ru

添加评论