Page 134 - 《软件学报》2020年第10期
P. 134
3110 Journal of Software 软件学报 Vol.31, No.10, October 2020
[68]提出了一种动态调整作业访存优先级的方法,实现了内存带宽上的动态优先级控制;
(2) LLC(last level cache)缓存.缓存资源作为影响作业性能的重要资源,其上的干扰同样不可忽略.多个作
业在共享缓存时可能出现相互替换的现象,LLC 失效时原本访存指令的执行时间将从 15ns 上升至
70ns,假设 CPU 主频为 3Ghz,则一条访存指令需要多消耗 200 多个周期才能完成 [69] .消除此类干扰的
方法是使用资源划分技术,在物理上划分多个作业对共享资源的使用.图 3(左)所示为经典的多核体系
结构,多个 CPU 共享了 LLC,运行于不同 CPU 上的作业会在 LLC 上发生竞争,图 3(右)所示的 Intel
Cascade Lake 微架构,通过为每个核设置独立的 LLC 以减少核间对于 LLC 的资源竞争;但是,同一 CPU
上的多个作业在混部运行时仍然会出现缓存相互替换问题,因此需要作业级别的缓存划分技术.为了
实现作业级别的缓存划分,Intel 提出了 RDT 技术 [70] ,其中,CAT(cache allocation technology) [71] 可为进程
或者 CGroup 分配私有的缓存空间,避免缓存相互替换;
(3) 缓存带宽.RDT 技术中的 MBA(memory bandwidth allocation)提供了作业级别的 L2 Cache 带宽划分(即
L2 与 L3 缓存之间的带宽),RDT 技术仅在 Intel 较新型号的处理器上可以使用.
资源隔离技术降低了多个作业在竞争的共享资源时的相互干扰,随着操作系统和硬件架构的不断更新和
发展,出现了越来越多的软件或软硬件协同的资源隔离技术,如 GPU 隔离技术 [72] .但是,由于硬件结构的复杂性,
在某些关键资源上仍然缺乏通用且有效的资源隔离技术,如 TLB 快表、L1/2 缓存、总线带宽等,有待进一步深
入研究加以解决.
2.4.2 资源动态分配算法
现有的操作系统和虚拟化技术提供了一系列资源隔离技术,可在作业运行时动态调整该作业的可用资源.
例如:Linux 提供的 CGroup 提供了包括 CPU、内存、磁盘 I/O、网络 I/O 等多种资源在内的资源弹性伸缩机制;
多数商用 CPU 提供了动态调节处理器频率的功能(dynamic voltage and frequency scaling,简称 DVFS),如 Intel
系列处理器 [73] ;缓存方面,Intel 公司推出了 CAT 技术,可为作业分配私有缓存并支持运行时修改作业可用的缓
存容量.以现有资源隔离技术为基础,研究人员研究了资源动态分配算法,在作业运行时动态调整各个作业对于
共享资源的使用量,进而实现控制和减少作业间性能干扰,提升作业运行效率等目标.图 4 所示为资源动态分配
算法的基本工作流,作业在运行过程中所产生的监控数据被输入到资源动态分配算法,算法结合作业性能干扰
模型给出资源动态调整决策(如增加资源、减少资源、迁移作业等操作),资源动态调整决策经资源隔离技术修
改作业的资源分配,往复循环直至作业结束.
Fig.4 Taxonomy of dynamic resource management algorithms
图 4 资源动态分配算法基本工作流
从算法目标的角度,可将资源动态分配算法分为解决干扰和预防干扰两种.以解决干扰为目标的资源动态
分配算法首先持续监控在线作业的性能指标并判断是否发生性能干扰,如果发生,则需要动态调整在离线作业