Large Pages May Be Harmful on NUMA Systems

此论文是ATC’14上的一篇文章,今天特意总结一下,希望对读者会有所帮助。

相关资料

姓名 主页 谷歌学术 dblp
Fabien Gaud Fabien Gaud Fabien Gaud Fabien Gaud
Baptiste Lepers Baptiste Lepers Baptiste Lepers Baptiste Lepers
Jeremie Decouchant Jeremie Decouchant Jeremie Decouchant Jeremie Decouchant
Justin Funston Justin Funston Justin Funston
Alexandra Fedorova Alexandra Fedorova Alexandra Fedorova Alexandra Fedorova
Vivien Quema Vivien Quema Vivien Quema Vivien Quema

介绍

NUMA系统上,内存分布在多个物理节点上,大页损害了NUMA系统的性能。

大页可能加剧有害的NUMA效应,如局部性差和不平衡,这两者均会增加内存访问延迟。

hot page effect&&page-level false sharing

大页的应用使内存管理单元更粗糙, 因此,许多频繁访问的内存地址更可能映射到相同的物理页面上,并且使得拥有该页的存储器节点重载(overload) - 这就是所谓的hot page effect。 hot page effect不能通过页面迁移和平衡来解决; 在重新平衡内存之前必须拆分页面。

大页导致线程之间的page-level false sharing(线程访问同一页面上的不同数据)更频繁。 page-level false sharing局部性差,仅通过页面迁移不能解决问题。

贡献点

  • 量化在NUMA系统上大页引起的性能下降。 我们发现它影响到我们benchmark集中25%至30%的应用程序,并导致5%至43%的性能下降。

  • 证明这些性能损失是由于NUMA因素,如局部性差和不平衡。

  • 表明可以使用旧技术和新技术的组合来解决问题。

衡量指标

衡量大页优势的指标

由page table walks引起的L2 cache miss的数量(可从硬件性能计数器获得),以及任何核在page fault handler中花费的最长时间。当我们使用大页时,我们预计由于page table walks而导致的L2 cache miss将降低。 类似地,大页将减少页面page fault的数量,从而减少page fault handler花费的时间。

衡量NUMA效应的指标

local access ratio (LAR),即访问本地内存的百分比以及内存控制器的流量不平衡。

对于内存密集型应用程序,低LAR和高不平衡意味着NUMA问题。

实现

我们的解决方案包括两个组件:现有的NUMA-aware页面放置算法Carrefour,以及基于Carrefour的大页面扩展-Carrefour-LP。 对于一些受影响的应用程序,仅使用Carrefour就能够恢复失去的性能,但在其他情况下,由于hot page effect和page-level false sharing,Carrefour无效。 因此,我们实现了Carrefour-LP,根据需要动态拆分大页来解决hot page effect和page-level false sharing这两个问题。

Carrefour-LP由两部分组成:reactive component和conservative component。

  • reactive component连续监视NUMA效应的指标,如果存在问题,则应用Carrefour的页面平衡技术,如果Carrefour无效,则拆分大页。
  • conservative component持续监视大页优势的指标,如果大页能够提供收益,则重新启用以前被禁用的大页。

算法见下图。其中4-9行对应于conservative component,其余部分对应于reactive component。

说明:Interleave就将内存page随机分布到各个CPU Core上,使得每个CPU的负载和Remote Access的频率都均匀分布。

总结

使用大页可能会造成或者加剧NUMA问题,例如减少局部性或不平衡。 在某些情况下,这些问题可以通过使用NUMA-aware页面放置算法来解决,但后者遇到了两个问题:hot page effect和page-level false sharing,这些问题不能通过页面迁移来解决。 为了解决这些问题,我们实现了Carrefour-LP。 实验结果显示,Carrefour-LP恢复了由于大页而损失的性能。

当大型页面(1GB)被广泛使用时,像Carrefour-LP这样的解决方案在未来将会更加重要。