From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: hpa@zytor.com, josh@joshtriplett.org, rostedt@goodmis.org,
mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com,
torvalds@linux-foundation.org, mingo@kernel.org,
tglx@linutronix.de, peterz@infradead.org,
linux-kernel@vger.kernel.org, oleg@redhat.com,
linux-tip-commits@vger.kernel.org
Subject: Re: [tip:sched/core] sched/core: Avoid _cond_resched() for PREEMPT=y
Date: Thu, 22 Sep 2016 11:30:20 -0700 [thread overview]
Message-ID: <20160922183020.GP14933@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.LRH.2.02.1609221421290.12217@file01.intranet.prod.int.rdu2.redhat.com>
On Thu, Sep 22, 2016 at 02:25:01PM -0400, Mikulas Patocka wrote:
> I've found a document that says that cond_resched() is needed on
> preemptible kernels to mark RCU quiescent states:
>
> https://lwn.net/Articles/603252/
>
> Paul, is cond_resched() still needed on current RCU implementation? Or not?
It can be if you loop in the kernel for a very long time.
But cond_resched_rcu_qs() is instead needed in cases where there is only
one runnable non-idle non-nohz task on a given CPU.
Thanx, Paul
> Mikulas
>
>
>
> On Thu, 22 Sep 2016, tip-bot for Peter Zijlstra wrote:
>
> > Commit-ID: 35a773a07926a22bf19d77ee00024522279c4e68
> > Gitweb: http://git.kernel.org/tip/35a773a07926a22bf19d77ee00024522279c4e68
> > Author: Peter Zijlstra <peterz@infradead.org>
> > AuthorDate: Mon, 19 Sep 2016 12:57:53 +0200
> > Committer: Ingo Molnar <mingo@kernel.org>
> > CommitDate: Thu, 22 Sep 2016 14:53:46 +0200
> >
> > sched/core: Avoid _cond_resched() for PREEMPT=y
> >
> > On fully preemptible kernels _cond_resched() is pointless, so avoid
> > emitting any code for it.
> >
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> > Cc: Linus Torvalds <torvalds@linux-foundation.org>
> > Cc: Mikulas Patocka <mpatocka@redhat.com>
> > Cc: Oleg Nesterov <oleg@redhat.com>
> > Cc: Peter Zijlstra <peterz@infradead.org>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: linux-kernel@vger.kernel.org
> > Signed-off-by: Ingo Molnar <mingo@kernel.org>
> > ---
> > include/linux/sched.h | 4 ++++
> > kernel/sched/core.c | 2 ++
> > 2 files changed, 6 insertions(+)
> >
> > diff --git a/include/linux/sched.h b/include/linux/sched.h
> > index f00ee8e..b99fcd1 100644
> > --- a/include/linux/sched.h
> > +++ b/include/linux/sched.h
> > @@ -3209,7 +3209,11 @@ static inline int signal_pending_state(long state, struct task_struct *p)
> > * cond_resched_lock() will drop the spinlock before scheduling,
> > * cond_resched_softirq() will enable bhs before scheduling.
> > */
> > +#ifndef CONFIG_PREEMPT
> > extern int _cond_resched(void);
> > +#else
> > +static inline int _cond_resched(void) { return 0; }
> > +#endif
> >
> > #define cond_resched() ({ \
> > ___might_sleep(__FILE__, __LINE__, 0); \
> > diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> > index b2ec53c..d7babcc 100644
> > --- a/kernel/sched/core.c
> > +++ b/kernel/sched/core.c
> > @@ -4883,6 +4883,7 @@ SYSCALL_DEFINE0(sched_yield)
> > return 0;
> > }
> >
> > +#ifndef CONFIG_PREEMPT
> > int __sched _cond_resched(void)
> > {
> > if (should_resched(0)) {
> > @@ -4892,6 +4893,7 @@ int __sched _cond_resched(void)
> > return 0;
> > }
> > EXPORT_SYMBOL(_cond_resched);
> > +#endif
> >
> > /*
> > * __cond_resched_lock() - if a reschedule is pending, drop the given lock,
> >
>
next prev parent reply other threads:[~2016-09-22 18:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <tip-35a773a07926a22bf19d77ee00024522279c4e68@git.kernel.org>
2016-09-22 18:25 ` [tip:sched/core] sched/core: Avoid _cond_resched() for PREEMPT=y Mikulas Patocka
2016-09-22 18:30 ` Paul E. McKenney [this message]
2016-09-22 18:42 ` Peter Zijlstra
2016-09-22 20:28 ` Paul E. McKenney
2016-09-23 8:44 ` Peter Zijlstra
2016-09-23 14:47 ` Paul E. McKenney
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=20160922183020.GP14933@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=hpa@zytor.com \
--cc=jiangshanlai@gmail.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=mpatocka@redhat.com \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.