论文部分内容阅读
非一致性内存访问(NUMA)架构因其更高的内存带宽和良好的扩展性,逐渐替代了传统的一致性内存访问(UMA)架构,并广泛应用在云计算数据中心基础设施中。基于NUMA架构的虚拟化系统中,管理不当的vCPU和内存拓扑关系会导致大量的远端内存访问延迟和共享资源竞争开销,从而为虚拟化系统引入不必要的性能损耗。一些面向NUMA架构的虚拟CPU调度优化系统采用对虚拟CPU的PMU信息进行采样,分析归纳虚拟CPU特征并采取针对性调度的策略,来达到减少系统中虚拟CPU的远端内存访问和缓解共享资源竞争的问题。但是这种基于周期性采样获取vCPU大致特征并指导vCPU调度决策的方法存在一定的误差。从而影响最终的调度决策效率。对现有周期性采样方法中存在的vCPU特征采样分析不精细,和vCPU调度决策不准确的问题进行了试验分析验证。实验数据分析显示,通过采样vCPU在一段时间内的访存特征统计得到的vCPU特征结果与真实vCPU访存特征之间存在时间延迟,不能准确反应vCPU的真实特征,并且会导致vCPU调度决策时的不准确。提出了一种细粒度的vCPU调度策略,根据虚拟机vCPU中所运行的进程的访存特征来指导vCPU调度。该策略统计每个vCPU执行周期内vCPU的访存计数,并识别该vCPU执行周期内其上运行的具体客户机进程,从而分析计算得到客户机进程的访问特征。同时使用LRU缓存队列缓存系统中客户机进程的访问亲缘节点,在调度时,根据vCPU中运行的进程,以及进程的亲缘节点,优先将vCPU迁移到该进程的亲缘节点上调度,从而能够尽可能减少系统中的远端内存访问开销问题,达到提升虚拟化系统性能的效果。对该调度策略基于x86硬件架构和Xen虚拟机管理器实现了系统的原型,并实验验证效果。实验结果显示,通过检测CR3的变化能够准确地检测到虚拟CPU中运行的客户机进程,并且这种基于CR3识别的虚拟CPU调度策略能够极大地缓解远端内存访问的存在,并一定上提升访存密集型应用程序在基于NUMA架构的虚拟化系统中的运行性能。这种检测和调度方式比目前的针对vCPU的访存特性检测和调度的策略更加细粒度,更加精确。