【文件属性】:
文件名称:调度的对象-含有导频的ofdm信号子载波的调制方式识别方法
文件大小:279KB
文件格式:PDF
更新时间:2021-06-07 17:51:33
Xen VCPU调度
(4)调度的隔离性
一个 VCPU 的调度不能影响其它 VCPU 的调度,即一个
VCPU 的运行,不能影响其它 VCPU 的性能,调度算法应当保
证 VCPU 之间性能的隔离性。
(5)调度的不对等性
应当根据虚拟机应用的不同,选择合适的 VCPU 调度算
法。当前,服务器整合是计算机虚拟化应用最广泛的场合之
一,虚拟化能把多个服务器应用整合到一台物理服务器上去,
作为不同的虚拟机同时运行,不同的应用需求不同。应当根
据这些虚拟机应用特点,如 I/O密集型、数据密集型、交互密集
型等,选择合适的调度算法,所使用调度策略必须考虑虚拟机
之间的不对等,才能提高虚拟化性能。
(6)VCPU 在对称多处理器(SMP)上调度的负载平衡 [3]
当前,SMP 平台已经得到广泛应用 [4],VCPU 在多处理器
上的调度应当首先考虑负载平衡问题,应当使每个物理处理
器资源得到充分利用。
以上是VCPU调度算法设计时需要考虑问题,事实上,在
设计虚拟机监控器时,并不存在一种调度策略能够同时满足
以上 6 点。在实现 VCPU 调度算法时,应当分析现有调度算
法,结合现有虚拟机调度策略,根据实际情况和具体的虚拟机
应用设计最合适的调度算法。本文以一款典型虚拟机监控器
Xen 为例,分析 VCPU 调度算法。
2 Xen 中调度算法比较
随着Xen的不断发展,Xen中的VCPU调度算法也是根据
需求不断发展的。Xen 曾经使用了多种 VCPU 调度策略,Xen
曾经使用过的 3 种调度算法如下:
(1)BVT(borrowed virtual time)
BVT 算法是 Stanford 大学 Duda 等人在 1999 年提出的 [1],
它是一种基于虚拟时间概念的公平分配算法。BVT 算法为实
时应用和交互应用提供了较低的延迟时间。算法根据虚拟时
间的大小决定VCPU的运行时间,具有最早虚拟时间的VCPU
得到运行。实时应用和交互应用等时间敏感的应用通过更改
虚拟时间使VCPU获得更高的优先级,VCPU可以向自己将来
的 CPU 份额借用虚拟时间来有效的降低延时。
BVT 算法是连续工作型调度算法,不支持精确的 CPU 分
配。该算法在单处理器和多处理器上都有实现,是 Xen2.0 默
认的调度算法。
(2)简单最小时限调度(simple earliest deadline first,SEDF)
EDF 算法是 20 世纪 70 年代提出的一种用于实时操作系
统的动态调度算法
[1],Xen 将其修改后形成 SEDF 算法作为
VCPU 的调度算法。
该算法是基于最小时限概念的调度算法。算法为每个
VCPU 指定一个三元组(s,p,x)来控制 VCPU 的运行。s 代表时
间片、p 代表 CPU 周期,表示 VCPU 在 p 周期必须运行 s 时间;
x是一个布尔值,表示VCPU是否符合条件接受额外的处理器
时间。调度器维护一个可运行队列和一个等待运行队列。可
运行队列保存当前周期还有可运行时间的VCPU,按照时限依
次排列;等待运行队列保存当前周期可运行时间已经用完的
VCPU,按照下一周期开始的时间依次递增排列。每次发生调
度时,处理器从可运行队列头选择 VCPU 进行调度。
SEDF算法有连续型和断续型两种工作模式,同时支持精
确的 VCPU 分配。该算法在多核处理器上也有实现,但是不
支持对称多处理器的负载平衡。SEDF 算法是 Xen3.0 的默认
调度算法,在 Xen 的最新版本中也有实现。
(3)基于信用度的调度
随着虚拟机监控器的发展,虚拟机的应用场景越来越广
泛,针对前两种调度算法的不足,在最新版本的Xen中加入了
基于信用度的调度算法
[5]。
算法的主要思想就是为每个 VCPU 设置一个信用度 cre-
dit,credit 值越大,VCPU 越早获得运行。VCPU 的运行将会消
耗 credit 值,每隔一段时间,由一个结算线程重新计算各个
VCPU 的 credit 的值,调度时,调度器根据 credit 值的大小选择
合适的 VCPU 进行调度。
该算法支持 SMP 负载平衡,支持精确的 VCPU 分配,是
Xen3.3 默认的调度算法。
(4)3 种调度算法比较(如表 1 所示)
随着硬件的发展,虚拟机应用场景的越来越广泛,这就对
VCPU调度算法提出了更高的要求,Xen中的调度算法也是根
据实际情况不断发展完善的。表 1 对 Xen 中 3 种调度算法进
行了对比。在 Xen3.3 源代码中,包括了简单最小时限调度,基
于信用度的调度两种调度算法。SEDF 算法能够让 I/O 敏感类
应用获得更短的延迟响应时间,而 credit算法能够公平的分配
处理器资源,在调度 CPU 敏感类应用时取得更好的性能 [6]。
用户可以根据需求通过命令行接口为Xen定制不同的调
度算法。因为 credit 算法在调度多处理器和 QoS 控制方面表
现更为出色,Xen3.3 把它作为默认调度算法 [7]。
3 调度算法的具体实现
在最新 Xen3.3 源代码中,基于信用度的调度算法是 Xen
默认的调度算法,本节以Xen中基于信用度的调度算法为例,
给出 Xen 中 VCPU 调度算法的整个处理流程。
3.1 调度的对象
每个虚拟机都可以包含多个VCPU,虚拟机监控器需要调
度这些VCPU,调度时需要在调度策略上同时兼顾到对虚拟机
的选择,如图 1 所示,虚拟机下的运行的各个 VCPU 是虚拟机
的调度对象。
表 1 3 种调度算法比较
调度算法 Xen 版本 支持连续型 支持断续型 支持SMP负载平衡
BVT Xen2.0 是 否 否
SEDF Xen3.0 是 是 否
Credit based Xen3.3 是 是 是