From: Joel Fernandes <joel@joelfernandes.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Nishanth Aravamudan <naravamudan@digitalocean.com>,
Julien Desfossez <jdesfossez@digitalocean.com>,
Tim Chen <tim.c.chen@linux.intel.com>,
Vineeth Pillai <viremana@linux.microsoft.com>,
Aaron Lu <aaron.lwe@gmail.com>,
Aubrey Li <aubrey.intel@gmail.com>,
tglx@linutronix.de, linux-kernel@vger.kernel.org,
mingo@kernel.org, torvalds@linux-foundation.org,
fweisbec@gmail.com, keescook@chromium.org, kerrnel@google.com,
Phil Auld <pauld@redhat.com>,
Valentin Schneider <valentin.schneider@arm.com>,
Mel Gorman <mgorman@techsingularity.net>,
Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
vineeth@bitbyteword.org, Chen Yu <yu.c.chen@intel.com>,
Christian Brauner <christian.brauner@ubuntu.com>,
Agata Gruza <agata.gruza@intel.com>,
Antonio Gomez Iglesias <antonio.gomez.iglesias@intel.com>,
graf@amazon.com, konrad.wilk@oracle.com, dfaggioli@suse.com,
pjt@google.com, rostedt@goodmis.org, derkling@google.com,
benbjiang@tencent.com,
Alexandre Chartre <alexandre.chartre@oracle.com>,
James.Bottomley@hansenpartnership.com, OWeisse@umich.edu,
Dhaval Giani <dhaval.giani@oracle.com>,
Junaid Shahid <junaids@google.com>,
jsbarnes@google.com, chris.hyser@oracle.com,
Ben Segall <bsegall@google.com>, Josh Don <joshdon@google.com>,
Hao Luo <haoluo@google.com>,
Tom Lendacky <thomas.lendacky@amd.com>
Subject: Re: [PATCH v10 2/5] sched: CGroup tagging interface for core scheduling
Date: Fri, 5 Feb 2021 11:37:31 -0500 [thread overview]
Message-ID: <YB10S/qnerZkH9eb@google.com> (raw)
In-Reply-To: <YBwKRaNKJ8lD8DgZ@hirez.programming.kicks-ass.net>
On Thu, Feb 04, 2021 at 03:52:53PM +0100, Peter Zijlstra wrote:
> On Fri, Jan 22, 2021 at 08:17:01PM -0500, Joel Fernandes (Google) wrote:
> > +static void sched_core_update_cookie(struct task_struct *p, unsigned long cookie,
> > + enum sched_core_cookie_type cookie_type)
> > +{
> > + struct rq_flags rf;
> > + struct rq *rq;
> > +
> > + if (!p)
> > + return;
> > +
> > + rq = task_rq_lock(p, &rf);
> > +
> > + switch (cookie_type) {
> > + case sched_core_task_cookie_type:
> > + p->core_task_cookie = cookie;
> > + break;
> > + case sched_core_group_cookie_type:
> > + p->core_group_cookie = cookie;
> > + break;
> > + default:
> > + WARN_ON_ONCE(1);
> > + }
> > +
> > + /* Set p->core_cookie, which is the overall cookie */
> > + __sched_core_update_cookie(p);
> > +
> > + if (sched_core_enqueued(p)) {
> > + sched_core_dequeue(rq, p);
> > + if (!p->core_cookie) {
> > + task_rq_unlock(rq, p, &rf);
> > + return;
> > + }
> > + }
> > +
> > + if (sched_core_enabled(rq) &&
> > + p->core_cookie && task_on_rq_queued(p))
> > + sched_core_enqueue(task_rq(p), p);
> > +
> > + /*
> > + * If task is currently running or waking, it may not be compatible
> > + * anymore after the cookie change, so enter the scheduler on its CPU
> > + * to schedule it away.
> > + */
> > + if (task_running(rq, p) || p->state == TASK_WAKING)
> > + resched_curr(rq);
>
> I'm not immediately seeing the need for that WAKING test. Since we're
> holding it's rq->lock, the only place that task can be WAKING is on the
> wake_list. And if it's there, it needs to acquire rq->lock to get
> enqueued, and rq->lock again to get scheduled.
>
> What am I missing?
Hi Peter,
I did this way following a similar pattern in affine_move_task(). However, I
think you are right. Unlike in the case affine_move_task(), we have
schedule() to do the right thing for us in case of any races with wakeup. So
the TASK_WAKING test is indeed not needed and we can drop tha test. Apologies
for adding the extra test out of paranoia.
thanks,
- Joel
next prev parent reply other threads:[~2021-02-05 21:43 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-23 1:16 [PATCH v10 0/5] Core scheduling remaining patches Joel Fernandes (Google)
2021-01-23 1:17 ` [PATCH v10 1/5] sched: migration changes for core scheduling Joel Fernandes (Google)
2021-01-23 1:17 ` [PATCH v10 2/5] sched: CGroup tagging interface " Joel Fernandes (Google)
2021-02-03 16:51 ` Peter Zijlstra
2021-02-04 13:59 ` Peter Zijlstra
2021-02-05 16:42 ` Joel Fernandes
2021-02-04 13:54 ` Peter Zijlstra
2021-02-05 3:45 ` Josh Don
2021-02-04 13:57 ` Peter Zijlstra
2021-02-04 20:52 ` Chris Hyser
2021-02-05 10:43 ` Peter Zijlstra
2021-02-05 22:19 ` Chris Hyser
2021-02-04 14:01 ` Peter Zijlstra
2021-02-05 3:55 ` Josh Don
2021-02-04 14:35 ` Peter Zijlstra
2021-02-05 4:07 ` Josh Don
2021-02-04 14:52 ` Peter Zijlstra
2021-02-05 16:37 ` Joel Fernandes [this message]
2021-02-05 11:41 ` Peter Zijlstra
2021-02-05 11:52 ` Peter Zijlstra
2021-02-06 1:15 ` Josh Don
2021-02-05 12:00 ` Peter Zijlstra
2021-02-23 4:00 ` Chris Hyser
2021-02-23 9:05 ` Peter Zijlstra
2021-02-23 19:25 ` Chris Hyser
2021-02-24 5:15 ` Josh Don
2021-02-24 13:02 ` Chris Hyser
2021-02-24 13:52 ` chris hyser
2021-02-24 15:47 ` chris hyser
2021-02-26 20:07 ` Chris Hyser
2021-03-01 21:01 ` Josh Don
2021-01-23 1:17 ` [PATCH v10 3/5] kselftest: Add tests for core-sched interface Joel Fernandes (Google)
2021-01-23 1:17 ` [PATCH v10 4/5] Documentation: Add core scheduling documentation Joel Fernandes (Google)
2021-01-23 1:17 ` [PATCH v10 5/5] sched: Debug bits Joel Fernandes (Google)
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=YB10S/qnerZkH9eb@google.com \
--to=joel@joelfernandes.org \
--cc=James.Bottomley@hansenpartnership.com \
--cc=OWeisse@umich.edu \
--cc=aaron.lwe@gmail.com \
--cc=agata.gruza@intel.com \
--cc=alexandre.chartre@oracle.com \
--cc=antonio.gomez.iglesias@intel.com \
--cc=aubrey.intel@gmail.com \
--cc=benbjiang@tencent.com \
--cc=bsegall@google.com \
--cc=chris.hyser@oracle.com \
--cc=christian.brauner@ubuntu.com \
--cc=derkling@google.com \
--cc=dfaggioli@suse.com \
--cc=dhaval.giani@oracle.com \
--cc=fweisbec@gmail.com \
--cc=graf@amazon.com \
--cc=haoluo@google.com \
--cc=jdesfossez@digitalocean.com \
--cc=joshdon@google.com \
--cc=jsbarnes@google.com \
--cc=junaids@google.com \
--cc=keescook@chromium.org \
--cc=kerrnel@google.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@techsingularity.net \
--cc=mingo@kernel.org \
--cc=naravamudan@digitalocean.com \
--cc=pauld@redhat.com \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
--cc=valentin.schneider@arm.com \
--cc=vineeth@bitbyteword.org \
--cc=viremana@linux.microsoft.com \
--cc=yu.c.chen@intel.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.