From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Christopher Lameter <cl@linux.com>
Cc: Alan Cox <gnomes@lxorguk.ukuu.org.uk>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Peter Zijlstra <peterz@infradead.org>,
Boqun Feng <boqun.feng@gmail.com>,
Andy Lutomirski <luto@amacapital.net>,
Dave Watson <davejwatson@fb.com>,
linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
Paul Turner <pjt@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Russell King <linux@arm.linux.org.uk>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H . Peter Anvin" <hpa@zytor.com>,
Andrew Hunter <ahh@google.com>, Andi Kleen <andi@firstfloor.org>,
Ben Maurer <bmaurer@fb.com>, Steven Rostedt <rostedt@goodmis.org>,
Josh Triplett <josh@joshtriplett.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Catalin Marinas <catalin.marinas@arm>
Subject: Re: [RFC PATCH for 4.17 02/21] rseq: Introduce restartable sequences system call (v12)
Date: Mon, 2 Apr 2018 08:27:36 -0700 [thread overview]
Message-ID: <20180402152736.GL3948@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1804021000290.23911@nuc-kabylake>
On Mon, Apr 02, 2018 at 10:03:58AM -0500, Christopher Lameter wrote:
> On Sun, 1 Apr 2018, Alan Cox wrote:
>
> > > Restartable sequences are atomic with respect to preemption
> > > (making it atomic with respect to other threads running on the
> > > same CPU), as well as signal delivery (user-space execution
> > > contexts nested over the same thread).
> >
> > CPU generally means 'big lump with legs on it'. You are not atomic to the
> > same CPU, because that CPU may have 30+ cores with 8 threads per core.
> >
> > It could do with some better terminology (hardware thread, CPU context ?)
>
> Well we call it a "CPU" in the scheduler context I think. We could use
> better terminology throughout the kernel tools and source.
Agreed, it has been "CPU" for "single hardware thread" for a very long
time. People tend to use "core" for "group of hardware threads" and
"socket" for "big lump with legs on it".
> Hardware Execution Context?
Should be even more fun when non-CPU hardware execution contexts show
up in force within each core. ;-)
But the terminology in place for non-CPU hardware execution contexts
should be able to survive that event.
> > > In a typical usage scenario, the thread registering the rseq
> > > structure will be performing loads and stores from/to that
> > > structure. It is however also allowed to read that structure
> > > from other threads. The rseq field updates performed by the
> > > kernel provide relaxed atomicity semantics, which guarantee
> > > that other threads performing relaxed atomic reads of the cpu
> > > number cache will always observe a consistent value.
> >
> > So what happens to your API if the kernel atomics get improved ? You are
> > effectively exporting rseq behaviour from private to public.
>
> There is already a pretty complex coherency model guiding kernel atomics.
> Improvements/changes to that are difficult and the effect will ripple
> throughout the kernel. So I would suggest that these areas of the kernel
> are pretty "petrified" (or written in stone).
I suspect that there are much more pressing areas of confusion in any
case!
Thanx, Paul
WARNING: multiple messages have this Message-ID (diff)
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Christopher Lameter <cl@linux.com>
Cc: Alan Cox <gnomes@lxorguk.ukuu.org.uk>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Peter Zijlstra <peterz@infradead.org>,
Boqun Feng <boqun.feng@gmail.com>,
Andy Lutomirski <luto@amacapital.net>,
Dave Watson <davejwatson@fb.com>,
linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
Paul Turner <pjt@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Russell King <linux@arm.linux.org.uk>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H . Peter Anvin" <hpa@zytor.com>,
Andrew Hunter <ahh@google.com>, Andi Kleen <andi@firstfloor.org>,
Ben Maurer <bmaurer@fb.com>, Steven Rostedt <rostedt@goodmis.org>,
Josh Triplett <josh@joshtriplett.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Michael Kerrisk <mtk.manpages@gmail.com>,
Alexander Viro <viro@zeniv.linux.org.uk>
Subject: Re: [RFC PATCH for 4.17 02/21] rseq: Introduce restartable sequences system call (v12)
Date: Mon, 2 Apr 2018 08:27:36 -0700 [thread overview]
Message-ID: <20180402152736.GL3948@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1804021000290.23911@nuc-kabylake>
On Mon, Apr 02, 2018 at 10:03:58AM -0500, Christopher Lameter wrote:
> On Sun, 1 Apr 2018, Alan Cox wrote:
>
> > > Restartable sequences are atomic with respect to preemption
> > > (making it atomic with respect to other threads running on the
> > > same CPU), as well as signal delivery (user-space execution
> > > contexts nested over the same thread).
> >
> > CPU generally means 'big lump with legs on it'. You are not atomic to the
> > same CPU, because that CPU may have 30+ cores with 8 threads per core.
> >
> > It could do with some better terminology (hardware thread, CPU context ?)
>
> Well we call it a "CPU" in the scheduler context I think. We could use
> better terminology throughout the kernel tools and source.
Agreed, it has been "CPU" for "single hardware thread" for a very long
time. People tend to use "core" for "group of hardware threads" and
"socket" for "big lump with legs on it".
> Hardware Execution Context?
Should be even more fun when non-CPU hardware execution contexts show
up in force within each core. ;-)
But the terminology in place for non-CPU hardware execution contexts
should be able to survive that event.
> > > In a typical usage scenario, the thread registering the rseq
> > > structure will be performing loads and stores from/to that
> > > structure. It is however also allowed to read that structure
> > > from other threads. The rseq field updates performed by the
> > > kernel provide relaxed atomicity semantics, which guarantee
> > > that other threads performing relaxed atomic reads of the cpu
> > > number cache will always observe a consistent value.
> >
> > So what happens to your API if the kernel atomics get improved ? You are
> > effectively exporting rseq behaviour from private to public.
>
> There is already a pretty complex coherency model guiding kernel atomics.
> Improvements/changes to that are difficult and the effect will ripple
> throughout the kernel. So I would suggest that these areas of the kernel
> are pretty "petrified" (or written in stone).
I suspect that there are much more pressing areas of confusion in any
case!
Thanx, Paul
next prev parent reply other threads:[~2018-04-02 15:27 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-27 16:05 [RFC PATCH for 4.17 00/21] Restartable sequences and CPU op vector Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 01/21] uapi headers: Provide types_32_64.h Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 02/21] rseq: Introduce restartable sequences system call (v12) Mathieu Desnoyers
2018-03-28 6:47 ` Boqun Feng
2018-03-28 6:47 ` Boqun Feng
2018-03-28 14:06 ` Mathieu Desnoyers
2018-03-28 14:06 ` Mathieu Desnoyers
2018-03-28 14:31 ` Mathieu Desnoyers
2018-03-28 14:31 ` Mathieu Desnoyers
2018-03-28 11:19 ` Peter Zijlstra
2018-03-28 11:19 ` Peter Zijlstra
2018-03-28 14:19 ` Mathieu Desnoyers
2018-03-28 14:19 ` Mathieu Desnoyers
2018-03-28 11:22 ` Peter Zijlstra
2018-03-28 11:22 ` Peter Zijlstra
2018-03-28 14:26 ` Mathieu Desnoyers
2018-03-28 14:26 ` Mathieu Desnoyers
2018-03-28 12:29 ` Peter Zijlstra
2018-03-28 12:29 ` Peter Zijlstra
2018-03-28 12:52 ` Peter Zijlstra
2018-03-28 12:52 ` Peter Zijlstra
2018-03-28 15:03 ` Mathieu Desnoyers
2018-03-28 15:03 ` Mathieu Desnoyers
2018-03-28 16:19 ` Mathieu Desnoyers
2018-03-28 16:19 ` Mathieu Desnoyers
2018-03-28 12:50 ` Peter Zijlstra
2018-03-28 12:50 ` Peter Zijlstra
2018-03-28 14:47 ` Mathieu Desnoyers
2018-03-28 14:47 ` Mathieu Desnoyers
2018-03-28 14:59 ` Peter Zijlstra
2018-03-28 14:59 ` Peter Zijlstra
2018-03-28 15:14 ` Mathieu Desnoyers
2018-03-28 15:14 ` Mathieu Desnoyers
2018-03-28 15:28 ` Peter Zijlstra
2018-03-28 15:28 ` Peter Zijlstra
2018-03-28 15:37 ` Mathieu Desnoyers
2018-03-28 15:37 ` Mathieu Desnoyers
2018-03-28 17:49 ` Peter Zijlstra
2018-03-28 17:49 ` Peter Zijlstra
2018-03-28 20:19 ` Mathieu Desnoyers
2018-03-28 20:19 ` Mathieu Desnoyers
2018-03-28 21:25 ` Thomas Gleixner
2018-03-28 21:25 ` Thomas Gleixner
2018-03-29 13:54 ` Mathieu Desnoyers
2018-03-29 13:54 ` Mathieu Desnoyers
2018-03-29 14:23 ` Peter Zijlstra
2018-03-29 14:23 ` Peter Zijlstra
2018-03-29 15:39 ` Mathieu Desnoyers
2018-03-29 15:39 ` Mathieu Desnoyers
2018-03-29 16:24 ` Steven Rostedt
2018-03-29 16:24 ` Steven Rostedt
2018-03-29 18:02 ` Mathieu Desnoyers
2018-03-29 18:02 ` Mathieu Desnoyers
2018-03-29 18:07 ` Steven Rostedt
2018-03-29 18:07 ` Steven Rostedt
2018-03-29 18:35 ` Mathieu Desnoyers
2018-03-29 18:35 ` Mathieu Desnoyers
2018-03-29 18:46 ` Steven Rostedt
2018-03-29 18:46 ` Steven Rostedt
2018-03-29 18:47 ` Steven Rostedt
2018-03-29 18:47 ` Steven Rostedt
2018-04-01 16:13 ` Alan Cox
2018-04-01 16:13 ` Alan Cox
2018-04-02 15:03 ` Christopher Lameter
2018-04-02 15:03 ` Christopher Lameter
2018-04-02 15:27 ` Paul E. McKenney [this message]
2018-04-02 15:27 ` Paul E. McKenney
2018-04-02 15:33 ` Mathieu Desnoyers
2018-04-02 15:33 ` Mathieu Desnoyers
2018-04-03 16:36 ` Mathieu Desnoyers
2018-04-03 16:36 ` Mathieu Desnoyers
2018-04-03 20:32 ` Mathieu Desnoyers
2018-04-03 20:32 ` Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 03/21] arm: Add restartable sequences support Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 04/21] arm: Wire up restartable sequences system call Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 05/21] x86: Add support for restartable sequences Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 06/21] x86: Wire up restartable sequence system call Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 07/21] powerpc: Add support for restartable sequences Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 08/21] powerpc: Wire up restartable sequences system call Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 09/21] sched: Implement push_task_to_cpu (v2) Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 10/21] cpu_opv: Provide cpu_opv system call (v6) Mathieu Desnoyers
2018-03-28 15:22 ` Peter Zijlstra
2018-03-28 15:22 ` Peter Zijlstra
2018-03-28 17:54 ` Mathieu Desnoyers
2018-03-28 17:54 ` Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 11/21] x86: Wire up cpu_opv system call Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 12/21] powerpc: " Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 13/21] arm: " Mathieu Desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 14/21] selftests: lib.mk: Introduce OVERRIDE_TARGETS Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 15/21] cpu_opv: selftests: Implement selftests (v7) Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 16/21] rseq: selftests: Provide rseq library (v5) Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 17/21] rseq: selftests: Provide percpu_op API Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 18/21] rseq: selftests: Provide basic test Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 19/21] rseq: selftests: Provide basic percpu ops test Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 20/21] rseq: selftests: Provide parametrized tests Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 16:05 ` [RFC PATCH for 4.17 21/21] rseq: selftests: Provide Makefile, scripts, gitignore Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` Mathieu Desnoyers
2018-03-27 16:05 ` mathieu.desnoyers
2018-03-27 19:09 ` [RFC PATCH for 4.17 00/21] Restartable sequences and CPU op vector Peter Zijlstra
2018-03-27 19:09 ` Peter Zijlstra
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=20180402152736.GL3948@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=ahh@google.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=bmaurer@fb.com \
--cc=boqun.feng@gmail.com \
--cc=catalin.marinas@arm \
--cc=cl@linux.com \
--cc=davejwatson@fb.com \
--cc=gnomes@lxorguk.ukuu.org.uk \
--cc=hpa@zytor.com \
--cc=josh@joshtriplett.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=luto@amacapital.net \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--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.