第 4 章 内存

本章概述了红帽企业版 Linux 7 的内存管理功能。<第 4.1 节 “注意事项”> 探讨了与内存相关的会影响性能的因素。<第 4.2 节 “监控及诊断性能问题”> 教您如何使用红帽企业版 Linux 7 的工具来诊断与内存使用情况或配置细节相关的性能问题。<第 4.3 节 “配置工具”> 探讨了可以使用的工具和策略,以此解决红帽企业版 Linux 7 中与内存相关的性能问题。

4.1. 注意事项

对于适中的工作负载,红帽企业版 Linux 7 会默认优化。如果用户的应用程序或用例需要大量的内存,那么改变系统处理虚拟内存可以提高应用程序的性能。

4.1.1. 页面大小

物理内存管理区块称为页面。每一个页面的物理位置都映射到一个虚拟位置以便处理器能够访问内存。这种映射存储于一个叫做页面表的数据结构中。
默认情况下,一个页面大约有 4 KB。由于页面的默认大小非常小,因此用户需要很多页面来管理大量的内存。但是,页面表只能存储有限的地址映射,增加其存储地址映射的数量既昂贵又困难,因为要考虑到将性能等级保持在内存需求的范围内。
红帽企业版 Linux 通过静态大型分页来给每个页面管理大内存的能力。静态大型分页可以配置到 1 GB 大小。但很难对其进行手动管理,必须在启动时就分配好。
透明大型分页很大程度上是之余静态大型页面的一个自动选择。透明大型页面大小为 2 MB 且默认启动。它们有时会干扰对延迟敏感的应用程序,因此常常在延迟严重时被禁用。
配置大页面以提高应用程序性能,详情请见 <第 4.3.1 节 “配置大页面”>。

4.1.2. 转换后背缓冲区大小

从页面表中读取地址映射很耗时且资源很宝贵,因此 Linux 操作系统提供最近使用地址的缓存:转换后背缓冲区(TLB)。但默认的 TLB 只能缓存一定量的地址映射。如果需要的地址映射不在 TLB 中(即,TLB missed),系统仍然需要读取页面表以决定物理到虚拟的地址映射。
由于应用程序内存需求与用来缓存地址映射的页面大小之间的关系,较于对内存需求小的应用程序来说,对内存需求大的应用程序更容易受到 TLB 缺失造成的性能下降问题。因此无论何时,避免 TLB 缺失很重要。
红帽企业版 Linux 提供大型转换后背缓冲区 (大型 TLB),可以将内存分为大片段进行管理。这使大量的地址映射能同时进行缓存,以此降低 TLB 缺失的可能性,并提高需要大内存的应用程序的性能。
配置大型 TLB,详情请见 <第 4.3.1 节 “配置大页面”>。