【内核调度、负载均衡】【update_group_capacity】

MC层级的group_capacity的更新

这里需要区分是MC层级还是DIE。他们的区别是sd->child是否为NULL。MC层级为NULL

具体可以看update_cpu_capacity这个函数

void update_group_capacity(struct sched_domain *sd, int cpu)
{
	struct sched_domain *child = sd->child;
	struct sched_group *group, *sdg = sd->groups;
	unsigned long capacity, min_capacity, max_capacity;
	unsigned long interval;

	interval = msecs_to_jiffies(sd->balance_interval);
	//负载均衡的最大值不能超过1UL和max_load_balance_interval 之间,
	//也就是负载均衡的最大周期不能超过max_load_balance_interval
	interval = clamp(interval, 1UL, max_load_balance_interval);
	sdg->sgc->next_update = jiffies + interval;

	if (!child) {
		update_cpu_capacity(sd, cpu);
		return;
	}
......
}

rq->cpu_capacity

本cpu的cfs的计算能力,rq->cpu_capacity =

(rq->cpu_capacity_orig  -  rq->rt.avg.util_avg)*

 

(rq->cpu_capacity_orig  -  rq->avg_irq.util_avg)/

 

rq->cpu_capacity_orig

 

sd->group->sgc->capacity

sdg->sgc->capacity = rq->cpu_capacity

 

Sd->group->sgc->max_capacity

sdg->sgc->max_capacity =  rq->cpu_capacity

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值