关于组调度的tg->shares疑问。。。
这个函数是何含义?(SMP时使用)求指点,谢谢!static long calc_cfs_shares(struct cfs_rq *cfs_rq, struct task_group *tg)
{
long tg_weight, load, shares;
tg_weight = calc_tg_weight(tg, cfs_rq);
load = cfs_rq->load.weight;
shares = (tg->shares * load);
if (tg_weight)
shares /= tg_weight;
if (shares < MIN_SHARES)
shares = MIN_SHARES;
if (shares > tg->shares)
shares = tg->shares;
return shares;
}
:'(
load_weight = atomic_read(&tg->load_weight);
load_weight -= cfs_rq->load_contribution;
load_weight += load;
求解释啊 每个cgroup的shares默认都是1024,一个cgroup的进程是可以分配到每个cpu上的,所以每个tick都需要重新计算tg在这个cpu上的shares,会决定它的load.weight。
页:
[1]