随着多处理器、多核、众核技术的迅猛发展和广泛应用,存储访问的瓶颈变得尤为突出。尽管国内外学术界已经就多核环境下的软硬件协同问题展开了不少研究,但相关工作仍处于初步探索阶段。人们对于如何度量多核系统的性能及可伸缩性的认识尚不够深刻;对于如何提高软件系统的并发度,如何可控地利用多核系统中的高速缓存、总线带宽等共享的存储资源,如何更好的适应核与核之间的异构特征等问题仍未能形成共识。同时,多核系统的硬件架构也在快速地发展变化,系统软件对各种新处理器适应性和可伸缩性的重要性日益凸显。为此,本项目将针对多核环境中存储系统的性能瓶颈日益增大、异构性不断加强的趋势,探索新的系统软件的设计方法和优化策略;通过调整数据布局、优化调度等手段,对异构存储架构进行细粒度的控制与利用,从而提升操作系统、虚拟机管理器、数据库管理系统等系统软件在新一代硬件平台上的性能和可伸缩性。
multi-core storage hierarchy;cache locality;sampling and monitoring;performance optimization;cache sharing
随着多核处理器的普及和云计算服务的发展,从高速缓存、内存到外存整个存储架构已经成为影响整体系统性能的瓶颈。本项目采用两种面向性能优化的系统软件设计模式——采样监控与动态调整和高层特征层间透传与识别,对高速缓存和内存资源进行监控、调度和优化,提升整体系统的性能与伸缩性。在采样监控与动态调整方面,对内存缓存空间分配、共享缓存调度、动态缓存划分和工作集预测与调整等方面进行研究。针对内存缓存系统(Memcached)的类间内存分配钙化问题,利用缓存局部性原理,基于缓存足迹可组合的特性,采用动态规划算法计算最优分配方案,对类间内存分配进行动态调整,优化效果接近理论最优。针对多核架构下共享缓存竞争问题,提出了两种失效率曲线快速采样方法(ABF采样和CBF采样),仅用不超过一秒时间的采样数据,并应用缓存失效率曲线组合模型,即可计算出优化的组合调度方案。针对基于页面着色的高速缓存划分粒度过大的问题,提出仅对热页内存进行着色缓存划分的方法,能够更精准的控制缓存划分,降低共享缓存应用间的相互影响。针对服务器虚拟化中虚拟机内存超配问题,利用处理器性能计数器统计信息,实现间歇式的基于重用距离的低开销的内存工作集预测,指导在虚拟机间进行内存调配。在高层特征层间透传与识别方面,对内存大页优化、动态内存管理运行时优化和GPU虚拟化优化等方面进行了研究。使用大页内存可以降低地址转换开销和缺页频度,通过修改内核以及运行时库,实现强制的内存分配大页对齐,避免了现有的透明大页机制并不能充分利用大页的问题。对虚拟机中频繁分配释放内存的应用,缺省的运行时内存管理策略与虚拟化特性不匹配,通过增加延时内存释放机制,避免了应用产生大量缺页导致虚拟机频繁陷出带来的开销。通过虚拟机与虚拟机管理器间的内存共享,配合循环中GPU调用的自动聚合,缓解了GPU虚拟化开销过大的问题。此外,在缓存局部性理论方面,提出了缓存划分共享方法,可实现有公平性要求的缓存调度优化。提出了基于平均淘汰时间的缓存动力学模型,能够在线性时间内以更小的空间代价获得应用的缓存失效率曲线,并保持了共享缓存时的可组合性。