From: Peter Zijlstra <peterz@infradead.org>
To: Josh Don <joshdon@google.com>
Cc: "Ingo Molnar" <mingo@redhat.com>,
"Juri Lelli" <juri.lelli@redhat.com>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
"Dietmar Eggemann" <dietmar.eggemann@arm.com>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Ben Segall" <bsegall@google.com>, "Mel Gorman" <mgorman@suse.de>,
"Daniel Bristot de Oliveira" <bristot@redhat.com>,
"Valentin Schneider" <vschneid@redhat.com>,
linux-kernel@vger.kernel.org, "Tejun Heo" <tj@kernel.org>,
"Michal Koutný" <mkoutny@suse.com>,
"Christian Brauner" <brauner@kernel.org>,
"Zefan Li" <lizefan.x@bytedance.com>
Subject: Re: [PATCH v3] sched: async unthrottling for cfs bandwidth
Date: Mon, 21 Nov 2022 13:34:33 +0100 [thread overview]
Message-ID: <Y3twWYeAW6U2/D92@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <CABk29NtSmXVCvkdpymeam7AYmXhZy2JLYLPFTdKpk5g6AN1-zg@mail.gmail.com>
On Fri, Nov 18, 2022 at 11:25:09AM -0800, Josh Don wrote:
> > Maybe have this function return false when local and save that cfs_rq in
> > a local var to process again later, dunno, that might turn messy.
>
> Maybe something like this? Apologies for inline diff formatting.
That looks entirely reasonable, not nearly as horrible as I feared. Let
me go make that happen.
> Note that one change we definitely want is the extra setting of
> throttled = true in the case that cfs_rq->runtime_remaining <= 0, to
> catch the case where we run out of runtime to distribute on the last
> entity in the list.
Done.
> > > +
> > > + /* Already enqueued */
> > > + if (SCHED_WARN_ON(!list_empty(&cfs_rq->throttled_csd_list)))
> > > + return;
> > > +
> > > + list_add_tail(&cfs_rq->throttled_csd_list, &rq->cfsb_csd_list);
> > > +
> > > + smp_call_function_single_async(cpu_of(rq), &rq->cfsb_csd);
> >
> > Hurmph.. so I was expecting something like:
> >
> > first = list_empty(&rq->cfsb_csd_list);
> > list_add_tail(&cfs_rq->throttled_csd_list, &rq->cfsb_csd_list);
> > if (first)
> > smp_call_function_single_async(cpu_of(rq), &rq->cfsb_csd);
> >
> > But I suppose I'm remembering the 'old' version. I don't think it is
> > broken as written. There's a very narrow window where you'll end up
> > sending a second IPI for naught, but meh.
>
> The CSD doesn't get unlocked until right before we call the func().
> But you're right that that's a (very) narrow window for an extra IPI.
> Please feel free to modify the patch with that diff if you like.
Since I was manually editing things, I did that too.
Please test the final version as found here:
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?h=sched/core&id=4e3c1b7b489e218dfa576cd6af0680b975b8743e
next prev parent reply other threads:[~2022-11-21 12:35 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-17 0:54 [PATCH v3] sched: async unthrottling for cfs bandwidth Josh Don
2022-11-18 12:47 ` Peter Zijlstra
2022-11-18 19:25 ` Josh Don
2022-11-20 2:22 ` Chengming Zhou
2022-11-21 11:58 ` Peter Zijlstra
2022-11-21 19:37 ` Josh Don
2022-11-22 10:35 ` Peter Zijlstra
2022-11-25 8:57 ` Peter Zijlstra
2022-11-25 8:59 ` Peter Zijlstra
2022-11-25 9:12 ` Peter Zijlstra
2022-11-29 1:38 ` Josh Don
2022-11-29 1:32 ` Josh Don
2022-11-21 12:34 ` Peter Zijlstra [this message]
2022-11-21 18:02 ` Michal Koutný
2022-11-21 19:31 ` Josh Don
2022-11-22 5:55 ` Aaron Lu
2022-11-22 10:30 ` Peter Zijlstra
2022-11-22 6:08 ` Aaron Lu
2022-11-22 19:41 ` Josh Don
2022-11-24 9:12 ` Peter Zijlstra
2022-12-27 12:13 ` [tip: sched/core] sched: Async " tip-bot2 for Josh Don
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=Y3twWYeAW6U2/D92@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=brauner@kernel.org \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=joshdon@google.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan.x@bytedance.com \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=mkoutny@suse.com \
--cc=rostedt@goodmis.org \
--cc=tj@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
/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.