文章目录
  1. 1. Proactively Breaking Large Pages to Improve Memory Overcommitment Performance
    1. 1.1. 相关资料
    2. 1.2. 问题
    3. 1.3. 实现
      1. 1.3.1. VMware ESXi内存管理基础原则
      2. 1.3.2. 拆分“冷”大页
      3. 1.3.3. clear 内存状态
        1. 1.3.3.1. high-to-clear的动态调整
      4. 1.3.4. 页面扫描速率的动态调整
    4. 1.4. 总结

Proactively Breaking Large Pages to Improve Memory Overcommitment Performance

相关资料

  • 作者
姓名 主页 dblp
Fei Guo Fei Guo Fei Guo
Seongbeom Kim Seongbeom Kim Seongbeom Kim
Ishan Banerjee Ishan Banerjee Ishan Banerjee

问题

当主机内存过量使用时,我们会衡量大页对工作负载性能的影响。由于使用大页会显著增加虚拟机内存消耗并降低页面共享,与使用小页相比,工作负载性能可能会大大降低。 然而,当主机有大量可用内存时,禁用大页通常会降低许多工作负载的性能。

实现

VMware ESXi内存管理基础原则

主机空闲内存的数量决定了空闲内存状态,根据不同的状态,ESXi将采取不同的技术来回收内存。主机内存有high和low这两个状态,状态转换阈值称为minFree,并根据主机内存大小进行预设。

当主机内存处于high状态时,仅使用页面共享来回收内存;当主机内存处于low状态时,ESXi会使用气球和swapping来回收内存。

拆分“冷”大页

识别不经常使用的大页,即“冷”大页,并允许它们在主机空闲内存充足时被拆分。 基本上,我们通过定期扫描大页的Accessed位,实现一个简单的“冷”大页检测器。 然后,Hypervisor会拆分包含可共享小页的“冷”大页。

clear 内存状态

当主机内存压力低时,拆分“冷”大页会降低主机内存消耗,性能影响可以忽略不计。 然而,当主机内存压力增加时,拆分“冷”大页可能依然使主机内存不足,主机内存最终达到low状态。 在这种情况下,提前打破所有大页(包括“热”的)是有益的,以便hypervisor可以通过页面共享抢先回收内存, 然后将气球技术或swapping回收的内存量最小化。 为了实现这一点,我们提出了一种在high状态和low状态之间的clear状态。

从high状态切换到clear状态的阈值,被称为high-to-clear。在clear状态下,任何大页如果包含可共享的小页,则可能会被拆分,并且不包含可共享的小页的大页仍然保留, ESXi中的大页分配和合并也都被禁用。

high-to-clear的动态调整

我们提出了一种基于空闲内存消耗率的high-to-clear调整机制。 本质上,如果主机空闲内存在clear状态时增加,我们将降低high-to-clear,以允许主机在将来重新进入high状态 ; 一旦我们检测到主机空闲内存迅速下降, high-to-clear将恢复为默认值。

页面扫描速率的动态调整

一般来说,扫描速率应根据主机内存消耗速率和虚拟机内存共享性进行设置。 例如,如果大页中较少的小页可共享,则扫描速率需要更高,以便从拆分的大页中拾取足够可共享的小页,反之亦然。 由于VM大页中的内存共享性在ESXi中是未知的,因此我们提出了一种使用抽样技术来估计客户机内存的可共享量。

总结

  • 识别“冷”大页,并允许在主机空闲内存足够时拆分它们
  • ESXi内存管理中添加了一个新的clear状态,在该状态下可以主动拆分所有大页。 实现基于主机内存消耗率调整clear状态阈值的策略。
  • 在clear状态下,使用提出的VM大页共享性估计器调整页面共享扫描速率,以通过页面共享有效地回收内存。

总的来说,通过较早地分享小页,可以减少需要通过昂贵的气球技术或swapping进行回收的内存量。

文章目录
  1. 1. Proactively Breaking Large Pages to Improve Memory Overcommitment Performance
    1. 1.1. 相关资料
    2. 1.2. 问题
    3. 1.3. 实现
      1. 1.3.1. VMware ESXi内存管理基础原则
      2. 1.3.2. 拆分“冷”大页
      3. 1.3.3. clear 内存状态
        1. 1.3.3.1. high-to-clear的动态调整
      4. 1.3.4. 页面扫描速率的动态调整
    4. 1.4. 总结