论文部分内容阅读
随着多核技术的迅猛发展和多核处理器的迅速普及,计算机的并行处理能力日益增强。为了充分利用硬件效能,程序设计者已经把多线程程序设计作为主要编程范型。线程间同步以及线程在共享Cache上的数据重用是决定多线程应用性能的两个关键因素,由于处理器的调度决定直接影响着同步性能的优劣以及数据重用的实现,因而面向多线程应用的处理器调度与分配必然成为一个研究热点。随着虚拟化系统因其易管理、高物理资源利用率、低能耗等优点而逐渐成为云计算/企业数据中心的主流基础架构,多线程应用以虚拟机作为主要运行环境的趋势已不可避免。 然而,在虚拟化系统中,由于语义缝隙的存在以及两级调度器的非协同性,现有的调度与分配策略或机制难以提供对多线程性能需求的支持,此外,多核处理器的多样化存储结构、性能不对称性等更增加了问题的复杂性和挑战性,因此,面向多线程应用的虚拟机VCPU(Virtual CPU,虚拟CPU)调度与分配研究具有重要的学术价值和应用价值。 面向多线程应用的虚拟机VCPU调度和分配的核心问题包括:多线程应用在虚拟化系统二级调度框架下有怎样的性能表现、如何建立有效的VCPU的调度和分配策略或机制来实现良好的同步性能以及如何建立有效的VCPU的调度和分配策略或机制来实现线程在共享Cache上的数据重用,它们是多线程应用运行在虚拟化系统中的基础问题,在国内外学术界至今没有有效地解决。面向多线程应用的VCPU调度与分配是一个富有挑战性的开放性课题。 针对上述核心问题,面向多线程应用的VCPU调度与分配问题分析首先从虚拟化系统架构入手,深入讨论VCPU调度与分配问题的复杂性及其产生原因,并在此基础上,结合多线程应用的性能需求,提出面向多线程应用的VCPU调度与分配所面临的主要问题和挑战。 非均匀VCPU-PCPU(Physical CPU,物理CPU)映射的性能分析面向解析虚拟化系统中多线程应用在非均匀VCPU-PCPU映射下的性能表现,首先分析非均匀VCPU-PCPU映射的产生原因,并通过形式化定义明确指出导致映射非均匀性的几个主要因素,然后通过实验手段对多线程应用在非均匀VCPU-PCPU映射存在时的性能表现进行量化分析,实验结果显示多线程应用在非均匀VCPU-PCPU映射下性能具有不可预见性,而导致性能不可预见性的根源在于不合理的VCPU调度与分配以及应用程序的自身结构,基于性能分析的启示,提出了面向均匀的VCPU-PCPU映射以及基于性能可扩展性的处理器分配原则或方法。 锁感知的VCPU调度机制面向解决虚拟化系统中锁持有者抢占的频繁发生导致同步性能损害的问题,首先通过实验手段分析VCPU过量提交、调度时间片大小以及多线程应用特性与自旋锁性能的关系,然后提出锁感知的VCPU调度机制LSM,LSM的核心是一种新颖的调度策略——时间预借调度策略。时间预借调度策略融合了现有的安全点抢占策略与自旋强制抢占策略的优点,同时比已有的组调度策略具有更好的适应性,能够有效地解决虚拟化系统中自旋锁性能损害问题。实验表明,与现有的几种典型的解决途径比较,在各种调度时间片取值情况下,LSM都具有更优的性能,尤其当调度时间片长度取值较大时,性能优势更显著。 基于逻辑划分的处理器分配策略以实现虚拟化系统中多线程在共享Cache上的数据重用为主要目标,提出一种新颖的基于逻辑划分的处理器动态分配策略CDLP,并设计了初始状态处理器分配算法、负载平衡算法、新的虚拟机加入时的处理器重新分配算法、处理器回收算法以及虚拟机退出时的处理器重新分配算法。CDLP有效地实现了多线程在共享Cache上的数据重用及处理器资源的充分利用,为了测试CDLP的正确性和有效性,基于Xen虚拟化平台设计了一个原型系统。实验表明,与Xen Credit调度器缺省的处理器分配策略相比较,CDLP能显著降低Cache缺失率,提升多线程应用尤其是对Cache敏感的多线程应用的性能。