Lines Matching refs:sgs

10137 group_has_capacity(unsigned int imbalance_pct, struct sg_lb_stats *sgs)  in group_has_capacity()  argument
10139 if (sgs->sum_nr_running < sgs->group_weight) in group_has_capacity()
10142 if ((sgs->group_capacity * imbalance_pct) < in group_has_capacity()
10143 (sgs->group_runnable * 100)) in group_has_capacity()
10146 if ((sgs->group_capacity * 100) > in group_has_capacity()
10147 (sgs->group_util * imbalance_pct)) in group_has_capacity()
10162 group_is_overloaded(unsigned int imbalance_pct, struct sg_lb_stats *sgs) in group_is_overloaded() argument
10164 if (sgs->sum_nr_running <= sgs->group_weight) in group_is_overloaded()
10167 if ((sgs->group_capacity * 100) < in group_is_overloaded()
10168 (sgs->group_util * imbalance_pct)) in group_is_overloaded()
10171 if ((sgs->group_capacity * imbalance_pct) < in group_is_overloaded()
10172 (sgs->group_runnable * 100)) in group_is_overloaded()
10181 struct sg_lb_stats *sgs) in group_classify() argument
10183 if (group_is_overloaded(imbalance_pct, sgs)) in group_classify()
10189 if (sgs->group_asym_packing) in group_classify()
10192 if (sgs->group_smt_balance) in group_classify()
10195 if (sgs->group_misfit_task_load) in group_classify()
10198 if (!group_has_capacity(imbalance_pct, sgs)) in group_classify()
10249 sched_group_asym(struct lb_env *env, struct sg_lb_stats *sgs, struct sched_group *group) in sched_group_asym() argument
10256 (sgs->group_weight - sgs->idle_cpus != 1)) in sched_group_asym()
10273 static inline bool smt_balance(struct lb_env *env, struct sg_lb_stats *sgs, in smt_balance() argument
10286 sgs->sum_h_nr_running > 1) in smt_balance()
10352 struct sg_lb_stats *sgs, in update_sg_lb_stats() argument
10359 memset(sgs, 0, sizeof(*sgs)); in update_sg_lb_stats()
10367 sgs->group_load += load; in update_sg_lb_stats()
10368 sgs->group_util += cpu_util_cfs(i); in update_sg_lb_stats()
10369 sgs->group_runnable += cpu_runnable(rq); in update_sg_lb_stats()
10370 sgs->sum_h_nr_running += rq->cfs.h_nr_runnable; in update_sg_lb_stats()
10373 sgs->sum_nr_running += nr_running; in update_sg_lb_stats()
10382 sgs->idle_cpus++; in update_sg_lb_stats()
10394 sgs->nr_numa_running += rq->nr_numa_running; in update_sg_lb_stats()
10395 sgs->nr_preferred_running += rq->nr_preferred_running; in update_sg_lb_stats()
10403 if (sgs->group_misfit_task_load < rq->misfit_task_load) { in update_sg_lb_stats()
10404 sgs->group_misfit_task_load = rq->misfit_task_load; in update_sg_lb_stats()
10409 if (sgs->group_misfit_task_load < load) in update_sg_lb_stats()
10410 sgs->group_misfit_task_load = load; in update_sg_lb_stats()
10414 sgs->group_capacity = group->sgc->capacity; in update_sg_lb_stats()
10416 sgs->group_weight = group->group_weight; in update_sg_lb_stats()
10419 if (!local_group && env->idle && sgs->sum_h_nr_running && in update_sg_lb_stats()
10420 sched_group_asym(env, sgs, group)) in update_sg_lb_stats()
10421 sgs->group_asym_packing = 1; in update_sg_lb_stats()
10424 if (!local_group && smt_balance(env, sgs, group)) in update_sg_lb_stats()
10425 sgs->group_smt_balance = 1; in update_sg_lb_stats()
10427 sgs->group_type = group_classify(env->sd->imbalance_pct, group, sgs); in update_sg_lb_stats()
10430 if (sgs->group_type == group_overloaded) in update_sg_lb_stats()
10431 sgs->avg_load = (sgs->group_load * SCHED_CAPACITY_SCALE) / in update_sg_lb_stats()
10432 sgs->group_capacity; in update_sg_lb_stats()
10451 struct sg_lb_stats *sgs) in update_sd_pick_busiest() argument
10456 if (!sgs->sum_h_nr_running) in update_sd_pick_busiest()
10466 (sgs->group_type == group_misfit_task) && in update_sd_pick_busiest()
10471 if (sgs->group_type > busiest->group_type) in update_sd_pick_busiest()
10474 if (sgs->group_type < busiest->group_type) in update_sd_pick_busiest()
10482 switch (sgs->group_type) { in update_sd_pick_busiest()
10485 return sgs->avg_load > busiest->avg_load; in update_sd_pick_busiest()
10503 return sgs->group_misfit_task_load > busiest->group_misfit_task_load; in update_sd_pick_busiest()
10510 if (sgs->idle_cpus != 0 || busiest->idle_cpus != 0) in update_sd_pick_busiest()
10528 if (sgs->avg_load < busiest->avg_load) in update_sd_pick_busiest()
10531 if (sgs->avg_load == busiest->avg_load) { in update_sd_pick_busiest()
10549 if (sg->flags & SD_SHARE_CPUCAPACITY && sgs->sum_h_nr_running <= 1) in update_sd_pick_busiest()
10563 if (sgs->idle_cpus > busiest->idle_cpus) in update_sd_pick_busiest()
10565 else if ((sgs->idle_cpus == busiest->idle_cpus) && in update_sd_pick_busiest()
10566 (sgs->sum_nr_running <= busiest->sum_nr_running)) in update_sd_pick_busiest()
10579 (sgs->group_type <= group_fully_busy) && in update_sd_pick_busiest()
10587 static inline enum fbq_type fbq_classify_group(struct sg_lb_stats *sgs) in fbq_classify_group() argument
10589 if (sgs->sum_h_nr_running > sgs->nr_numa_running) in fbq_classify_group()
10591 if (sgs->sum_h_nr_running > sgs->nr_preferred_running) in fbq_classify_group()
10605 static inline enum fbq_type fbq_classify_group(struct sg_lb_stats *sgs) in fbq_classify_group() argument
10670 struct sg_lb_stats *sgs, in update_sg_wakeup_stats() argument
10675 memset(sgs, 0, sizeof(*sgs)); in update_sg_wakeup_stats()
10679 sgs->group_misfit_task_load = 1; in update_sg_wakeup_stats()
10685 sgs->group_load += cpu_load_without(rq, p); in update_sg_wakeup_stats()
10686 sgs->group_util += cpu_util_without(i, p); in update_sg_wakeup_stats()
10687 sgs->group_runnable += cpu_runnable_without(rq, p); in update_sg_wakeup_stats()
10689 sgs->sum_h_nr_running += rq->cfs.h_nr_runnable - local; in update_sg_wakeup_stats()
10692 sgs->sum_nr_running += nr_running; in update_sg_wakeup_stats()
10698 sgs->idle_cpus++; in update_sg_wakeup_stats()
10702 sgs->group_misfit_task_load && in update_sg_wakeup_stats()
10704 sgs->group_misfit_task_load = 0; in update_sg_wakeup_stats()
10708 sgs->group_capacity = group->sgc->capacity; in update_sg_wakeup_stats()
10710 sgs->group_weight = group->group_weight; in update_sg_wakeup_stats()
10712 sgs->group_type = group_classify(sd->imbalance_pct, group, sgs); in update_sg_wakeup_stats()
10718 if (sgs->group_type == group_fully_busy || in update_sg_wakeup_stats()
10719 sgs->group_type == group_overloaded) in update_sg_wakeup_stats()
10720 sgs->avg_load = (sgs->group_load * SCHED_CAPACITY_SCALE) / in update_sg_wakeup_stats()
10721 sgs->group_capacity; in update_sg_wakeup_stats()
10727 struct sg_lb_stats *sgs) in update_pick_idlest() argument
10729 if (sgs->group_type < idlest_sgs->group_type) in update_pick_idlest()
10732 if (sgs->group_type > idlest_sgs->group_type) in update_pick_idlest()
10740 switch (sgs->group_type) { in update_pick_idlest()
10744 if (idlest_sgs->avg_load <= sgs->avg_load) in update_pick_idlest()
10762 if (idlest_sgs->idle_cpus > sgs->idle_cpus) in update_pick_idlest()
10766 if (idlest_sgs->idle_cpus == sgs->idle_cpus && in update_pick_idlest()
10767 idlest_sgs->group_util <= sgs->group_util) in update_pick_idlest()
10787 struct sg_lb_stats *sgs; in sched_balance_find_dst_group() local
10810 sgs = &local_sgs; in sched_balance_find_dst_group()
10813 sgs = &tmp_sgs; in sched_balance_find_dst_group()
10816 update_sg_wakeup_stats(sd, group, sgs, p); in sched_balance_find_dst_group()
10818 if (!local_group && update_pick_idlest(idlest, &idlest_sgs, group, sgs)) { in sched_balance_find_dst_group()
10820 idlest_sgs = *sgs; in sched_balance_find_dst_group()
11034 struct sg_lb_stats *sgs = &tmp_sgs; in update_sd_lb_stats() local
11040 sgs = local; in update_sd_lb_stats()
11047 update_sg_lb_stats(env, sds, sg, sgs, &sg_overloaded, &sg_overutilized); in update_sd_lb_stats()
11049 if (!local_group && update_sd_pick_busiest(env, sds, sg, sgs)) { in update_sd_lb_stats()
11051 sds->busiest_stat = *sgs; in update_sd_lb_stats()
11055 sds->total_load += sgs->group_load; in update_sd_lb_stats()
11056 sds->total_capacity += sgs->group_capacity; in update_sd_lb_stats()
11058 sum_util += sgs->group_util; in update_sd_lb_stats()