论文部分内容阅读
随着计算机处理速度和存储容量持续不断的更新和进步,越来越多的网络任务、计算任务利用虚拟化技术共享硬件资源,基于半虚拟化技术的开源软件Xen因支持多虚拟机同时隔离运行以及良好的性能表现在服务器市场的应用越来越广。Xen运行的时候存在三个调度层次:Xen管理模块中的虚拟机调度,虚拟机内部的进程调度和进程内部的线程调度。其中虚拟机调度层处于整个计算机系统的最底端,对于整个系统的性能有着最直接的影响。Xen当前默认调度算法通过给虚拟机分配credit来管理调度资源,按照其运行时间扣除相应的credit值。算法采取了先到先服务的简单策略,过分关注各虚拟机共享处理器资源的公平性,而忽视了I/O资源的调度,甚至在多种虚拟机场景中,各种任务相互干扰,既造成整个系统资源利用率下降,又使得各个虚拟机性能下降。虚拟机上运行的任务分为三类:计算密集型、带宽密集型、延迟敏感型。计算密集型任务关注CPU资源的使用和调度切换频率,而不在意短期内的调度延迟;带宽密集型任务关注I/O带宽量;延迟敏感型任务运行频率低但要求响应延迟时间小。同时带宽密集型任务和延迟敏感型任务作为I/O型任务每次运行时间短,对处理器和缓存开销很小。基于此,本文提出了基于缓存关联的虚拟机调度改进算法,将所有虚拟机按剩余credit值大小排列在队列中,并定义占据了当前缓存的计算型虚拟机为缓存关联虚拟机,Xen每隔0.5ms从队列中选择credit值最大的I/O型虚拟机运行,如果没有I/O任务,选择缓存关联虚拟机继续运行,重复这样直至其credit消耗完后,重新选择credit值最大的计算型虚拟机关联缓存。这样做可以最小化延迟敏感型任务的延迟和减少缓存切换开销。当所有的计算型虚拟机credit都消耗完后,统一再恢复至初始值。另外当驱动域在转发I/O数据包时,禁止被credit值大的I/O型虚拟机抢占,以减少切换的次数,提高整体I/O性能。最后,本文设计了六种多任务场景,对缓存关联调度算法和Xen已有的算法进行测试对比分析,证明了以上思想的正确性和可行性。