Re: [RFC PATCH v3 06/10] sched: Add over-utilization/tipping point indicator

From: Pavan Kondeti
Date: Tue Jun 19 2018 - 03:01:20 EST


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.