虚拟机(xen)中credit调度算法分析(1)

虚拟机(xen)中credit调度算法分析----schedule.c中调度部分的代码
杭州电子科技大学网格与服务计算实验室   周峰

    目前在XEN虚拟机中的调度算法有两种:一种的是SEDF,另一种是CREDIT。在这里只对CREDIT进行探讨,至于SEDF会留到后进行。首先我们来说说对调度的抽象层中的schedule.c文件中调度部分的代码. 在虚拟机xen中关于调度的代码是这样的:
void __init scheduler_init(void)

{   int i;
    open_softirq(SCHEDULE_SOFTIRQ, schedule); //打开/注册schedule这个软中断
    for_each_cpu ( i )
    {      //为每个cpu定一个定时器。在时间到后就调用回调函数s_time_fn, 并且在回调函数中调用产生软中断(设置bit),在cpu 发送vmexit后会检查软中断的mask位,如果发现某些位被置上后就会调用其中断回调函数。
        spin_lock_init(&per_cpu(schedule_data, i).schedule_lock);
        init_timer(&per_cpu(schedule_data, i).s_timer, s_timer_fn, NULL, i);
    }
    for ( i = 0; schedulers[i] != NULL; i++ )
    {
        ops = *schedulers[i];
        if ( strcmp(ops.opt_name, opt_sched) == 0 )
            break;
    }
    if ( schedulers[i] == NULL )
        printk("Could not find scheduler: %s/n", opt_sched);
    printk("Using scheduler: %s (%s)/n", ops.name, ops.opt_name);
    SCHED_OP(init);
}这里你可能有个疑问,既然存在两个不同的算法,那么我们怎么来定义使用哪一个算法呢?其实很简单,选择调度算法是用opt_sched字符数组来选择的!
/* opt_sched: scheduler - default to credit */
static char opt_sched[10] = "credit";
string_param("sched", opt_sched);
ps:这篇借鉴了联想研究院宋伟的文章,特此申明! 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值