1. 论文信息
- 文章来自International Symposium on Computer Architecture,ISCA,2014
- Going Vertical in Memory Management: Handling Multiplicity by Multi-policy
所有作者及单位
- Lei Liu,Zehan Cui,Yungang Bao,Mingyu Chen,Chengyong Wu,中国科学院计算机研究所计算机体系结构国家重点实验室
- Yong Li匹兹堡大学ECE系
2. Background
来自不同领域的许多新兴应用程序通常表现出异构内存特征。当在并行平台上组合运行时,这些应用程序会呈现出令人畏惧的各种工作负载行为,这对任何内存分配策略的有效性提出了挑战。先前的基于分区或随机内存分配方案通常仅管理内存层次结构的一级,并且通常针对特定工作负载。
共享内存资源的有效管理对于应用程序性能和系统吞吐量非常重要。然而,商业化并行机中使用的大多数现有内存和缓存管理机制都采用通用地址交错或调度/分区方法,这些方法忽视了当今异构环境中不同的内存利用率特征和不同的资源需求。这通常会导致程序间扰动、资源颠簸、内存/缓存利用率低下,从而导致性能下降。
当时架构允许所有应用程序共享LLC(末级缓存)和DRAM组,从而在许多情况下导致严重的争用。一般用页面着色解决,存在两种基于页面着色的分区技术,即高速缓存分区和DRAM存储体分区。如图 1 所示,可以通过使用操作系统物理页地址中表示LLC集索引(LLC颜色位)的位作为颜色位来实现缓存分区。当为应用程序分配页面时,操作系统可以为物理页面分配特定的颜色,以便应用程序只能访问指定颜色的缓存集。
3. 解决了什么问题
处理各种动态变化的内存和缓存分配需求。需要设计一种能够通过区分内存特性来选择合适的分配策略的内存管理系统。
(为了实现这一目标,简单地集成最佳性能的机制是不切实际的,因为几乎所有最先进的方案都需要对内存控制器/分配器或缓存层次结构进行昂贵的更改,更不用说检测和预测应用程序需求和冲突方面的挑战了。)
4. 其他学者解决这个问题的思路和缺陷
最近的几种解决方案尝试通过将主内存(DRAM 组)[10,16,17,29] 或缓存 [15,24,30,31,32] 水平分区为独占片来隔离具有不同内存资源需求的应用程序。这些方法避免了对内存占用较小的程序的干扰,但可能会通过有效减少容量来影响较大工作负载的性能。操作系统级别的分区和其他内存分配优化更加灵活,并且在许多案例方面表现良好。
先前的研究工作[12,29]表明,LLC和DRAM争用会显着降低整体系统性能,并且已经提出了许多解决方案来缓解争用问题。最有效的优化之一是基于页面着色的软件分区,它允许操作系统内核利用底层架构信息,例如 LLC 和 DRAM 的物理地址映射。通过页面着色,可以通过修改内核伙伴系统来缓解争用问题 [4,10,15,17,21,22,24,26],同时避免对内存控制器或缓存层次结构进行昂贵的硬件更改。
5. 围绕该问题作者如何构建解决思路
为了处理多样化且动态变化的内存和缓存分配需求,我们通过垂直分区增强现有的“水平”缓存/DRAM 存储体分区,并探索由此产生的多策略空间。着色位分为三类:bank-only、仅高速缓存位(C位)和重叠位(O位在图 1 中同时索引bank和高速缓存)。特别是,O位启用垂直分区(VP),通过内存层次结构垂直地对高速缓存和bank组进行分区。结合水平和垂直分区形成了以前未研究过的分区策略空间。
水平内存和缓存分区的好处是否可以累积(即,我们应该进行垂直分区吗?)所以作者测了测如下表所示的几种搭配
把214个workload根据性能提升的原因做了可视化
从上述定量研究中可以得出一个明显的结论:内存分配策略的有效性取决于特定的应用程序特性,特别是缓存需求。实际上,工作负载可能包含多个同时运行的应用程序,这些应用程序具有不同特征的任意组合,这使得确定适当的内存分配任务具有挑战性。然后总结了一下其他因素影响不大,缓存分区性能表现出的性能差异更大。为了验证缓存利用率特征对缓存分区策略的潜在影响,我们收集了当缓存配额从8/8(使用整个缓存)减少到1/8时各种应用程序的性能下降情况。
每个应用程序都会执行八次,每次都会通过基于页面着色的缓存分区分配不同数量的 LLC。根据结果,我们将应用程序的缓存行为分为四类:Core Cache Fitting(CCF)、LLC High (LLCH)、LLC Middle(LLCM) 和LLC Thrashing(LLCT)。图 4 报告了SPEC2006基准测试套件中各种基准测试的分类 [1]。CCF应用程序(表示为绿色曲线),例如hmmer和namd,在使用较少的LLC资源时不会显着降低性能,因为它们的工作集大小足够小,可以容纳L1和L2每核专用缓存。LLCT应用程序(黑色曲线),例如libquantum,也对缓存配额不敏感,但这是由于缓存抖动行为而不是较小的工作集大小。LLCH应用程序(红色曲线)(例如mcf)由于其资源匮乏的特性,因缓存配额减少而遭受最严重的性能下降。与LLCH相比,LLCM(蓝色曲线)应用程序使用更少的缓存资源,因此速度减慢没有LLCH应用程序那么多。例如,gcc和bzip2是LLCM,因为当缓存从8/8减少到4/8时,它们不会遭受明显的降级。然而,当缓存配额降至3/8以下时,性能会急剧下降。
但是要动态分类:做图4时的静态分析发现热页面的数量在很多情况下可以反映应用程序的LLC需求。图5显示了多个基准测试的热门页数量和缓存需求之间的相关性。
研究了这些策略针对2000多个工作负载的性能,并通过数据挖掘方法将结果与应用程序特征相关联。基于这种相关性,我们得出了几种实用的内存分配规则,并将其集成到统一的多策略框架中,以指导动态和多样化的多编程/线程工作负载的资源分区和合并。(生成了一套实用的分区和聚合规则以及一棵策略决策树,帮助HVR自动选择策略、动态资源分区和聚合。)
(置信度和支持度是数据挖掘中的术语。在我们的工作中,支持被定义为规则中包含特定类型应用程序的工作负载的比例;置信度表明该规则的准确性。)
在 Linux 内核 2.6.32 中将我们的方法实现为重构的页面索引系统加上一系列内核模块。
6. 从结果看,作者如何有力证明他解决了问题
大量实验表明,在实践中,我们的框架可以选择适当的内存分配策略,并始终优于未修改的Linux内核,与现有技术相比,性能提升高达11%。
7. 缺陷和改进思路
运行时采样得到分类,再和着色位绑定太晚了吧。