smp负载均衡_update_sg_lb_stats()

本文介绍了Linux kernel 3.18中的smp负载均衡,重点关注update_sg_lb_stats()方法。该方法更新调度组的负载统计信息,涉及目标负载与源负载计算,通过平滑操作减少不必要的进程迁移。负载均衡计算考虑了历史负载和当前负载,以降低cache效率损失。此外,文章还阐述了调度组容量因子、状态分类及其在负载不均衡和过载条件下的处理策略。
摘要由CSDN通过智能技术生成

kernel version: 3.18
在smp负载均衡过程中,为了计算方便,kernel中定义了struct sd_lb_stats结构体,该结构体描述调度域中的总负载、总能力系数和平均负载等信息。调度组也有一个类似的数据结构struct sg_lb_stats,用于描述该调度组里的相关信息,例如平均负载、总负载、总权重、进程平均权重等。
update_sg_lb_stats()方法用来更新当前调度组里的相关信息,首先看一下update_sg_lb_stats()方法的实现:

static inline void update_sg_lb_stats(struct lb_env *env,
                        struct sched_group *group, int load_idx,
                        int local_group, struct sg_lb_stats *sgs,
                        bool *overload)
{
   
        unsigned long load;
        int i;

        memset(sgs, 0, sizeof(*sgs));

        for_each_cpu_and(i, sched_group_cpus(group), env->cpus) {
   
                struct rq *rq = cpu_rq(i);

                trace_sched_cpu_load_lb(cpu_rq(i), idle_cpu(i),
                                     sched_irqload
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值