Lines Matching refs:sds

5971 static inline void init_sd_lb_stats(struct sd_lb_stats *sds)  in init_sd_lb_stats()  argument
5979 *sds = (struct sd_lb_stats){ in init_sd_lb_stats()
6323 struct sd_lb_stats *sds, in update_sd_pick_busiest() argument
6327 struct sg_lb_stats *busiest = &sds->busiest_stat; in update_sd_pick_busiest()
6348 if (!sds->busiest) in update_sd_pick_busiest()
6351 if (group_first_cpu(sds->busiest) > group_first_cpu(sg)) in update_sd_pick_busiest()
6393 static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sds) in update_sd_lb_stats() argument
6412 sds->local = sg; in update_sd_lb_stats()
6413 sgs = &sds->local_stat; in update_sd_lb_stats()
6436 if (prefer_sibling && sds->local && in update_sd_lb_stats()
6437 group_has_capacity(env, &sds->local_stat) && in update_sd_lb_stats()
6443 if (update_sd_pick_busiest(env, sds, sg, sgs)) { in update_sd_lb_stats()
6444 sds->busiest = sg; in update_sd_lb_stats()
6445 sds->busiest_stat = *sgs; in update_sd_lb_stats()
6450 sds->total_load += sgs->group_load; in update_sd_lb_stats()
6451 sds->total_capacity += sgs->group_capacity; in update_sd_lb_stats()
6457 env->fbq_type = fbq_classify_group(&sds->busiest_stat); in update_sd_lb_stats()
6490 static int check_asym_packing(struct lb_env *env, struct sd_lb_stats *sds) in check_asym_packing() argument
6497 if (!sds->busiest) in check_asym_packing()
6500 busiest_cpu = group_first_cpu(sds->busiest); in check_asym_packing()
6505 sds->busiest_stat.avg_load * sds->busiest_stat.group_capacity, in check_asym_packing()
6519 void fix_small_imbalance(struct lb_env *env, struct sd_lb_stats *sds) in fix_small_imbalance() argument
6526 local = &sds->local_stat; in fix_small_imbalance()
6527 busiest = &sds->busiest_stat; in fix_small_imbalance()
6587 static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *sds) in calculate_imbalance() argument
6592 local = &sds->local_stat; in calculate_imbalance()
6593 busiest = &sds->busiest_stat; in calculate_imbalance()
6601 min(busiest->load_per_task, sds->avg_load); in calculate_imbalance()
6609 if (busiest->avg_load <= sds->avg_load || in calculate_imbalance()
6610 local->avg_load >= sds->avg_load) { in calculate_imbalance()
6612 return fix_small_imbalance(env, sds); in calculate_imbalance()
6636 max_pull = min(busiest->avg_load - sds->avg_load, load_above_capacity); in calculate_imbalance()
6641 (sds->avg_load - local->avg_load) * local->group_capacity in calculate_imbalance()
6651 return fix_small_imbalance(env, sds); in calculate_imbalance()
6676 struct sd_lb_stats sds; in find_busiest_group() local
6678 init_sd_lb_stats(&sds); in find_busiest_group()
6684 update_sd_lb_stats(env, &sds); in find_busiest_group()
6685 local = &sds.local_stat; in find_busiest_group()
6686 busiest = &sds.busiest_stat; in find_busiest_group()
6690 check_asym_packing(env, &sds)) in find_busiest_group()
6691 return sds.busiest; in find_busiest_group()
6694 if (!sds.busiest || busiest->sum_nr_running == 0) in find_busiest_group()
6697 sds.avg_load = (SCHED_CAPACITY_SCALE * sds.total_load) in find_busiest_group()
6698 / sds.total_capacity; in find_busiest_group()
6724 if (local->avg_load >= sds.avg_load) in find_busiest_group()
6750 calculate_imbalance(env, &sds); in find_busiest_group()
6751 return sds.busiest; in find_busiest_group()