论文部分内容阅读
多核,即在一枚处理器中集成两个或多个完整的计算引擎,已经成为服务器技术的重要技术支点。未来多核处理器的发展趋势是多核的异构性,其中动态异构将对未来的操作系统提出更大的挑战。间歇性故障(Intermittent fault)是硬件领域一个普遍的现象,也是典型的动态异构场景。间歇性故障指的是硬件在一段时间内突发的故障,通常由电压、温度等因素的波动而引起。由于引起间歇性故障的因素非常多,所以突发故障持续的时间也是可短可长的。虚拟化技术是一个和多核处理器密切相关的概念,其基本思路就是单一的物理资源可以形成多个虚拟资源被操作。有了多核处理器,虚拟化的实现变得更为简单。近年来,Xen已经成为最热门的虚拟化技术之一。Xen是一个在IA-32 (x86, x86-64), IA-64及PowerPC 970等架构基础上的虚拟机监视器。Xen允许多个操作系统以安全和资源可管理的风格来共享普通的硬件,与此同时并不牺牲性能和功能。多任务是Xen的核心特点之一,Xen的Hypervisor(管理程序)介于硬件层和Xen的客户操作系统(Guest OS)之间,它必须保证每个正在运行的虚拟机获得一定的CPU时间。与操作系统的调度类似,Xen的调度是在公平的运行每个domain(虚拟运行环境)和达到较好的总体吞吐量之间的权衡。在动态异构多核处理器中,操作系统的调度会对性能和电源效率产生重大影响。同样的,不考虑多核动态异构性的CPU调度算法很可能会降低虚拟机的性能和可靠性。CPU间歇性故障会对多核处理器的性能和安全造成影响,因此也会对Xen的调度性能产生影响。我们在Hypervisor中建立了一个模拟CPU间歇性故障的时间模型,该模型下,未经修改的Xen系统中的虚拟机会立刻崩溃。我们分析了Xen中默认使用的也是最常用的CPU调度算法:Credit调度算法,发现该算法并未采集CPU上下线状态的变化情况。如果一个CPU突然下线,在该CPU上执行和等待的线程(在Xen中,这种线程指的是VCPU)就会终止。Xen的每一个domain关联一个或多个VCPU。在CPU该再次上线之前,关联离线CPU上VCPU的domain就会无法正常工作,因此导致该domain对应虚拟机的系统崩溃。本文针对Xen调度算法存在的问题,提出了应对CPU间歇性故障的自适应策略。在调度器中,我们周期性的跟踪CPU的状态变化,一旦某个CPU从在线状态变为离线状态,我们就把发生故障的CPU上的负载转移到其他的CPU上。实验表明,当间歇性故障频繁发生时,应用了自适应策略的Xen系统将能继续正常的运转,并且性能平滑的下降;与此同时,跟踪的开销几乎可以忽略不计。