Facebook推出TMO机制,让你节省服务器20-32%的内存

Facebook(在俄罗斯联邦被禁止)的工程师发布了一份关于去年实施 TMO(透明内存卸载)技术的报告,该技术通过将工作不需要的辅助数据替换为更便宜的驱动器(例如 NVMe),可以显着节省服务器上的 RAM SSD 磁盘。 Facebook 估计,使用 TMO 可以在每台服务器上节省 20% 到 32% 的 RAM。 该解决方案设计用于应用程序在隔离容器中运行的基础设施。 TMO 的内核端组件已包含在 Linux 内核中。

在 Linux 内核方面,该技术由 PSI(压力失速信息)子系统支持,从版本 4.20 开始可用。 PSI 已用于各种低内存处理程序中,并允许您分析有关获取各种资源(CPU、内存、I/O)的等待时间的信息。 借助 PSI,用户空间处理器可以更准确地评估系统负载级别和减速模式,从而可以在异常对性能产生明显影响之前及早发现异常。

在用户空间中,TMO 由 Senpai 组件提供,该组件通过 cgroup2 根据从 PSI 接收的数据动态调整应用程序容器的内存限制。 Senpai 通过 PSI 分析资源短缺开始的迹象,评估应用程序对内存访问速度减慢的敏感度,并尝试确定容器所需的最小内存大小,在该大小时操作所需的数据保留在 RAM 中,以及伴随的文件缓存中的数据或暂时不直接使用的数据将被强制移至交换分区。

Facebook推出TMO机制,让你节省服务器20-32%的内存

因此,TMO 的本质是严格控制进程的内存消耗,强制交换未使用的内存页,这些内存页的驱逐不会显着影响性能(例如,仅在初始化期间使用代码的页,以及一次性使用的页)。磁盘缓存中的数据)。 与响应内存压力而将信息逐出交换分区不同,在 TMO 中,数据是根据主动预测逐出的。

驱逐的标准之一是 5 分钟内没有访问内存页面。 此类页面称为冷内存页面,平均约占应用程序内存的 35%(根据应用程序的类型,范围从 19% 到 65%)。 抢占考虑与匿名内存页(由应用程序分配的内存)和用于文件缓存的内存(由内核分配)相关的活动。 在某些应用程序中,主要消耗是匿名内存,但在其他应用程序中,文件缓存也很重要。 为了避免缓存逐出不平衡,TMO 使用新的分页算法,按比例逐出匿名页面和与文件缓存关联的页面。

将不常用的页面推送到速度较慢的内存中不会对性能产生重大影响,但可以显着降低硬件成本。 数据被刷新到 SSD 驱动器或 RAM 中的压缩交换区域。 就存储一个字节数据的成本而言,使用 NVMe SSD 比在 RAM 中使用压缩便宜多达 10 倍。

Facebook推出TMO机制,让你节省服务器20-32%的内存


来源: opennet.ru

添加评论