On Mon, May 21, 2018 at 03:25:01PM +0100, Quentin Perret wrote:

<snip>

>       util_est_enqueue(&rq->cfs, p);
>       hrtick_update(rq);
> @@ -8121,11 +8144,12 @@ static bool update_nohz_stats(struct rq *rq, bool 
> force)
>   * @local_group: Does group contain this_cpu.
>   * @sgs: variable to hold the statistics for this group.
>   * @overload: Indicate more than one runnable task for any CPU.
> + * @overutilized: Indicate overutilization for any CPU.
>   */
>  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)
> +                     bool *overload, int *overutilized)
>  {
>       unsigned long load;
>       int i, nr_running;
> @@ -8152,6 +8176,9 @@ static inline void update_sg_lb_stats(struct lb_env 
> *env,
>               if (nr_running > 1)
>                       *overload = true;
>  
> +             if (cpu_overutilized(i))
> +                     *overutilized = 1;
> +

There is no need to check if every CPU is overutilized or not once
*overutilized is marked as true, right? 

<snip>

>  
> @@ -8586,6 +8621,10 @@ static struct sched_group *find_busiest_group(struct 
> lb_env *env)
>        * this level.
>        */
>       update_sd_lb_stats(env, &sds);
> +
> +     if (sched_energy_enabled() && !READ_ONCE(env->dst_rq->rd->overutilized))
> +             goto out_balanced;
> +

Is there any reason for sending no-hz idle kicks but bailing out here when
system is not overutilized?

-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux 
Foundation Collaborative Project.

Reply via email to