摘要:
随着虚拟化技术和多核NUMA架构发展和普及,基于虚拟化环境的多核NUMA架构商用服务器越来越受到广泛的重视以及使用。与此同时,业界对于虚拟化环境下的多核NUMA架构服务器的性能要求也越来越高。一方面,虚拟化环境下系统默认的调度器在NUMA架构下并不能获得很好的性能,另一方面,传统的NUMA架构因为虚拟化技术的引入变得更加复杂,现有的基于线程调度的优化算法也不能获得令人满意的性能提升。 在这样的背景下,本文设计并实现了一个面向虚拟化环境多核NUMA架构的性能优化系统,该系统基于共享缓存感知和NUMA感知,通过实时监测虚拟机线程和NUMA硬件等性能信息,分析VCPU线程特征,对VCPU进行实时迁移调度,以实现系统的负载均衡,提高系统性能。 本文所作的工作主要体现在以下几个方面: (1)对VCPU线程分类; 本文中,根据LLC失配率对VCPU线程进行分类,并在线程更新过程中利用二重指数平滑算法[14]类别的更新更加稳定可靠,相较于系统默认的调度器,这种对线程分类的方式更能考虑到VCPU线程的运行特征,更利于CNA系统做出更正确的调度决策。 (2)提出VCPU线程到节点的绑定; 在CNA_VCPU调度算法的设计中,笔者提出VCPU线程到节点的绑定。这么做一方面可以保证调度算法实现系统的负载均衡,另一方面也可以由系统自带调度器进行节点到CPU核的调度,不仅提高了调度算法的灵活性还提高了系统的调度效率。调度算法在做出调度决策时优先考虑将VCPU线程放置在当前节点上,可以降低系统VCPU线程调度的开销。 (3)为每个线程引入了HomeNode的概念; 为每个线程引入了HomeNode的概念,这样可以提高对LLC资源的共享,降低线程间对LLC竞争,提高系统性能。 (4)本文设计和实施了详尽的测试方案。 本文设计和实施了详尽的测试方案验证了CNA系统对虚拟机环境下多核NUMA系统有显著的性能提升。