All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Vincent Guittot <vincent.guittot@linaro.org>
Cc: mingo@redhat.com, juri.lelli@redhat.com,
	dietmar.eggemann@arm.com, rostedt@goodmis.org,
	bsegall@google.com, mgorman@suse.de, bristot@redhat.com,
	linux-kernel@vger.kernel.org, tim.c.chen@linux.intel.com,
	joel@joelfernandes.org
Subject: Re: [PATCH 1/2] sched/fair: skip newidle update stats
Date: Fri, 12 Nov 2021 15:29:24 +0100	[thread overview]
Message-ID: <YY56RBQR912S6ScC@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20211112095857.7016-2-vincent.guittot@linaro.org>

On Fri, Nov 12, 2021 at 10:58:56AM +0100, Vincent Guittot wrote:
> In case we skip the newly idle LB entirely or we abort it because we are
> going to exceed the avg_idle, we have to make sure to not start an update
> of the blocked load when entering idle
> 
> Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
> ---
>  kernel/sched/fair.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 13950beb01a2..a162b0ec8963 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -10861,7 +10861,7 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf)
>  	int this_cpu = this_rq->cpu;
>  	u64 t0, t1, curr_cost = 0;
>  	struct sched_domain *sd;
> -	int pulled_task = 0;
> +	int pulled_task = 0, early_stop = 0;
>  
>  	update_misfit_status(NULL, this_rq);
>  
> @@ -10898,8 +10898,16 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf)
>  	if (!READ_ONCE(this_rq->rd->overload) ||
>  	    (sd && this_rq->avg_idle < sd->max_newidle_lb_cost)) {
>  
> -		if (sd)
> +		if (sd) {
>  			update_next_balance(sd, &next_balance);
> +
> +			/*
> +			 * We skip new idle LB because there is not enough
> +			 * time before next wake up. Make sure that we will
> +			 * not kick NOHZ_NEWILB_KICK
> +			 */
> +			early_stop = 1;
> +		}
>  		rcu_read_unlock();
>  
>  		goto out;
> @@ -10918,8 +10926,10 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf)
>  
>  		update_next_balance(sd, &next_balance);
>  
> -		if (this_rq->avg_idle < curr_cost + sd->max_newidle_lb_cost)
> +		if (this_rq->avg_idle < curr_cost + sd->max_newidle_lb_cost) {
> +			early_stop = 1;
>  			break;
> +		}
>  
>  		if (sd->flags & SD_BALANCE_NEWIDLE) {
>  
> @@ -10969,7 +10979,7 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf)
>  
>  	if (pulled_task)
>  		this_rq->idle_stamp = 0;
> -	else
> +	else if (!early_stop)
>  		nohz_newidle_balance(this_rq);
>  
>  	rq_repin_lock(this_rq, rf);

Urgh code flow is a mess... Let me see if I can fix some of that.

Anyway, does nohz_newidle_balance() want to loose it's ->avg_idle test
with this on?

  reply	other threads:[~2021-11-12 14:29 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-12  9:58 [PATCH 0/2] avoid spurious blocked load update Vincent Guittot
2021-11-12  9:58 ` [PATCH 1/2] sched/fair: skip newidle update stats Vincent Guittot
2021-11-12 14:29   ` Peter Zijlstra [this message]
2021-11-12 14:47     ` Vincent Guittot
2021-11-12 15:29       ` Peter Zijlstra
2021-11-12 16:00         ` Vincent Guittot
2021-11-12 14:55   ` Peter Zijlstra
2021-11-12 14:55     ` Peter Zijlstra
2021-11-12 16:05       ` Vincent Guittot
2021-11-16 23:48 ` [PATCH 0/2] avoid spurious blocked load update Tim Chen
2021-11-18 14:40   ` Vincent Guittot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YY56RBQR912S6ScC@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=joel@joelfernandes.org \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=tim.c.chen@linux.intel.com \
    --cc=vincent.guittot@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.