虚拟机(xen)中credit调度算法分析(1)
2008-04-20 21:36
309 查看
虚拟机(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:这篇借鉴了联想研究院宋伟的文章,特此申明!
杭州电子科技大学网格与服务计算实验室 周峰
目前在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:这篇借鉴了联想研究院宋伟的文章,特此申明!
相关文章推荐
- 虚拟机(xen)中credit调度算法分析(一)
- 虚拟机(xen)中credit调度算法分析(2)
- 虚拟机(xen)中credit调度算法分析---(二)
- 虚拟机(xen)中credit调度算法分析(3)
- Xen中Credit调度算法分析
- xen中cpu调度算法credit的过程详解
- Xen 启动客户虚拟机的过程分析
- Xen Credit调度算法详细说明
- Xen 虚拟机 网络结构分析
- Xen Credit调度算法
- 虚拟机(xen)中credit调度算法分析
- 给 Xen 虚拟机添加一个网络接口
- xen 虚拟机 linux timezone 错误
- xen虚拟化实战系列(三)之xen虚拟机复制
- CloudSim源码分析之虚拟机分配
- <Linux> Xen虚拟机下挂载
- Xen入门系列二【使用 virt-install 安装虚拟机】
- xen虚拟化实战系列(九)之xen虚拟机时间配置
- Android ART运行时无缝替换Dalvik虚拟机的过程分析
- XEN启动过程分析