chishanmingshen 发表于 2015-09-29 15:10

关于组调度的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;
}

chishanmingshen 发表于 2015-09-29 20:00

:'(

load_weight = atomic_read(&tg->load_weight);
load_weight -= cfs_rq->load_contribution;
load_weight += load;
求解释啊

archer239915 发表于 2016-04-07 23:33

每个cgroup的shares默认都是1024,一个cgroup的进程是可以分配到每个cpu上的,所以每个tick都需要重新计算tg在这个cpu上的shares,会决定它的load.weight。
页: [1]
查看完整版本: 关于组调度的tg->shares疑问。。。