Xen vcpu 调度

来源:互联网 发布:手机数据共享怎么用 编辑:程序博客网 时间:2024/06/06 12:40

所谓VCPU的调度,是指由Xen决定当前由哪一个vcpu在物理CPU上执行。
Xen系统中主要支持两种调度算法。
简单最小时限调度算法 SEDF

    它将所有任务放在优先级队列中,当发生调度事件时(如任务结束、新任务加入等),从队列中找出时限最短的任务并调度运行。    它为每个vcpu指定周期p和时间片s,表示在周期p该vcpu必须运行s时间;用一个可运行队列管理所有当前周期内还有可运行时间的vcpu,这些vcpu按照时限递增排列;用一个等待队列管理当前周期的运行时间已经用完的vcpu,这些vcpu按照下一周期的开始时间递增排列。每次调度时,从可运行队列头取得可以运行的vcpu.

基于额度的调度算法

    Xen的默认调度算法。    在credit算法中,每个CPU管理一个本地可运行的vcpu队列,该队列根据vcpu的优先级进行排序。每个vcpu的优先级可以用两种状态:over and under。状态over表示它占用的CPU资源超过了资源的平均分值,under表示低于这个平分值。vcpu运行将消耗它的CPU额度(credit)。Xen每隔10ms就触发一次中断,将在运行的vcpu对应客户域的credit值减掉100,如果当前运行的vcpu对应的credit值足够大的话,那么允许该vcpu连续运行三个调度时长30ms.    Xen允许为每个Domain设置两个参数:weight和cap。其中,weight表示Domain调度的相对重要性;cap则是Domain可用CPU资源的绝对上限。

调度器

    在Xen系统中,每种调度算法被称之为调度器(scheduler)。Xen将支持的调度算法放在调度器数组schedules[]中,其中credit算法作为Xen默认的调度算法被保存在opt_sched中。
原创粉丝点击