分类: LINUX
2010-04-26 22:34:24
原留言地址:http://blog.chinaunix.net/u3/110888/guestbook.html
下午中,>>标志的是我的回复。
你好,博主,我看在linux SMP负载时,遇到几个问题,不是很清楚,想请您帮忙解释下,我是初学者,谢谢啦~~~
1:调度域中load balance串行化表示什么意思?在调度过程中有什么样作用?
>>load balance会引起整个system的进程在cpu间迁移,所以多个balance instance会增大迁移平衡难度。如果使能SD_SERIZE,会在loadbalance过程中申请balance spinlock,保证顺序完成平衡迁移工作。
2:有这样一段代码
BUG_ON(busiest==this_rq);
schedstat_add(sd,lb_imbalance[idle],imbalance);
ld_moved=0;
作者的解释是:不可能找到的最忙队列是本地队列,如果出现这种情况,打印出Oops
我想问的是 :为什么本地队列不可能是busiest队列,是因为本地队列所属的CPU是load balance的发起者吗?就是说本地队列应该是空闲的吗,所以不是busiest??
》》busiest runqueue是经过一系列的算法查找到的,所以本地cpu不可能是最忙的,否则就是bug.
3:load balance的时机有哪些?
空闲的CPU、tick中断(这个tick是每个cpu都有这样的一个时钟吗?)
》是
还有其他的load balance的时机吗?
>>cpuset机制变化的时候
4:linux SMP负载平衡中 有这样的一段,我也是不懂,希望作者帮忙解释一下
/*如果繁忙运行队列中的运行任务数小于等于1(空闲进程),该运行队列不需要被调度平衡(是因为没有运行任务数或者空闲进程吗?),但调度组仍然是繁忙的(没有运行任务数,或者只有空闲进程,这样的运行队列怎么可能是最忙的,不懂?????)*/
》说明其他cpu(不是最忙的)也没有进程跑
5:条件sd->nr_balance_failed>sd->cache_nice_tries+2表示什么意思?sd->cache_nice_tries变量表示什么意思?
>>不清楚这个。
6:调度域中组与组之间的负载平衡、组内部的负载平衡执行顺序是怎么样的??这里我看了好多资料都迷糊了。
》去看我文章中提到的ibm中文开发网站一篇yjfb4网友写的sched load balance文章。
调度平衡分清楚三部分:
1。 分level的,自下到上。不同domain
2. 每个domain好几个group
3. group为单位去评估负载,实现平衡调度。
很多资料上是这样说的:先找到最繁忙的组,再找到该组中最繁忙的运行队列,然后再进程迁移,这里的迁移是尽限最繁忙组内部的吗?那什么进行组与组之间的负载平衡呢???很不解~~~
希望博主能帮忙看下,感激不尽~~
谢谢~~~