public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: "Ted Ts'o" <tytso@mit.edu>, Ingo Molnar <mingo@elte.hu>,
	Greg KH <greg@kroah.com>,
	devel@driverdev.osuosl.org, Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org, lttng-dev@lists.lttng.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Steven Rostedt <rostedt@goodmis.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: Perf ABI (was: Re: [lttng-dev] [PATCH 09/11] sched: export task_prio to GPL modules)
Date: Thu, 12 Jan 2012 09:09:06 -0500	[thread overview]
Message-ID: <20120112140905.GA30377@Krystal> (raw)
In-Reply-To: <20111225174613.GA12732@thunk.org>

* Ted Ts'o (tytso@mit.edu) wrote:
> On Fri, Dec 23, 2011 at 01:16:41PM -0500, Mathieu Desnoyers wrote:
[...]
> > - The trace data format
> >   - Both versioned _and_ self-described.
> >   Self-description of the event/field layout allows the same tools to
> >   understand traces gathered on different kernel versions, on different
> >   architectures, with different tracer configurations.
> >   Versioning on top of the self-described trace format allows changes
> >   to what the trace self-description can express.
> 
> So there are two ways to do this.  One is to make changes be backwards
> compatible, so that the trace data format only breaks if you use the
> new feature; if it doesn't you encode things the old fashioned way.
> The other way of doing things is to randomly break users whenever the
> tracing developers decide to add some random new feature, regardless
> of whether or not a partiuclar user finds that new feature to be
> useful.
> 
> The first is acceptable.  The second, IMHO, is not.  Linus has said
> quite strongly that WE DO NOT BREAK USERSPACE.   Period.

Please allow me to look into what needs to be kept compatible for a good
user experience (for both Linux end users and kernel developers) in the
case of tracing:

Let's first describe what we really utterly don't want: random breakages
between the kernel and user-level tracing control/transport/analysis
tools. Consequently, I think we could say that it would be unacceptable
for userspace tools to break for every slight change of kernel code. If
that would be the case (as it was with the approach SystemTap was taking
before they started hooking into the kernel with tracepoints), then we'd
need to regenerate the tools for pretty much every -rc kernel, and for
each local development tree, which would make those tools useless to
kernel developers.

It is important to clarify that tracing is, in my opinion, not part of
the runtime support, which makes it very different by nature from
filesystems and kernel runtime support. So I agree with Linus' argument
about not breaking userspace when applied to runtime support, because
being unable to even boot a system due to an ABI breakage is very much
unwanted. However, I think it should not be applied as-is to tracing,
because you cannot make a system unusable due to a tracer ABI breakage:
if a tracer can be packaged in a set of standalone modules, that clearly
shows it is not part of the system runtime support.

That being said, ABI versioning could still handle ABI changes without
significantly impacting the users: when an ABI breakage is needed, we
can keep the old code around for a while and expose both the old and new
ABIs. This would ensure that the user-level tools can query for the
specific ABI major version(s) they support. That should improve the user
experience by providing "deprecated" console warnings for a few kernel
releases before the old code ends up being removed.

So, in summary:

  * Old kernels vs new tools:

New tools can query for the latest ABI they know, and fall-back on older
ABIs, with limited features.

  * New kernels vs old tools:

Keeping around the old ABI for a deprecation phase lets old tools work on
a bleeding edge kernel while the ABI change is being introduced, which
should satisfy the kernel developer use-case.

Best regards,

Mathieu

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

  reply	other threads:[~2012-01-12 14:09 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1322775683-8741-1-git-send-email-mathieu.desnoyers@efficios.com>
2011-12-01 21:41 ` [PATCH 01/11] mm: export vmalloc_sync_all symbol to GPL modules Mathieu Desnoyers
2011-12-01 21:57   ` Christoph Hellwig
2011-12-01 22:13     ` Greg KH
2011-12-01 22:19       ` Mathieu Desnoyers
2011-12-01 22:41         ` Greg KH
2011-12-01 22:28       ` Christoph Hellwig
2011-12-01 23:00         ` Greg KH
2011-12-01 21:41 ` [PATCH 03/11] fs/splice: export splice_to_pipe " Mathieu Desnoyers
2011-12-02  7:19   ` Jens Axboe
2011-12-02 12:32     ` Mathieu Desnoyers
2011-12-01 21:41 ` [PATCH 09/11] sched: export task_prio " Mathieu Desnoyers
2011-12-01 21:56   ` Peter Zijlstra
2011-12-01 22:04     ` Mathieu Desnoyers
2011-12-01 22:10       ` Peter Zijlstra
2011-12-01 22:15         ` Mathieu Desnoyers
2011-12-01 22:36           ` Mathieu Desnoyers
2011-12-01 23:05             ` Peter Zijlstra
2011-12-02 13:51               ` Mathieu Desnoyers
2011-12-01 23:06           ` Peter Zijlstra
2011-12-01 23:18             ` Greg KH
2011-12-01 23:47               ` Mathieu Desnoyers
2011-12-01 22:14     ` Greg KH
2011-12-01 22:20       ` Mathieu Desnoyers
2011-12-01 23:07       ` Peter Zijlstra
2011-12-01 23:17         ` Greg KH
2011-12-05 14:17           ` Ingo Molnar
2011-12-06 21:44             ` Greg KH
2011-12-08  5:23               ` Ingo Molnar
2011-12-08 23:27                 ` Greg KH
2011-12-19 10:49                   ` Ingo Molnar
2011-12-19 15:30                     ` [lttng-dev] " Mathieu Desnoyers
2011-12-20 11:08                       ` Ingo Molnar
2011-12-20 21:46                         ` Frank Rowand
2011-12-23 10:51                           ` Ingo Molnar
2011-12-21 18:47                         ` Aaron Spear
2011-12-21 18:58                           ` Christoph Hellwig
2011-12-23 16:46                         ` Perf ABI (was: Re: [lttng-dev] [PATCH 09/11] sched: export task_prio to GPL modules) Mathieu Desnoyers
2011-12-23 17:21                           ` Ted Ts'o
2011-12-23 18:16                             ` Mathieu Desnoyers
2011-12-25 17:46                               ` Ted Ts'o
2012-01-12 14:09                                 ` Mathieu Desnoyers [this message]
2012-01-12 14:54                                   ` Steven Rostedt
2012-01-12 15:39                                     ` [lttng-dev] Perf ABI (was: " Mathieu Desnoyers
2012-01-12 15:53                                       ` Steven Rostedt
2012-01-12 15:59                                         ` Steven Rostedt
2012-01-12 16:27                                         ` Mathieu Desnoyers
2012-01-12 16:34                                           ` Steven Rostedt
2012-01-12 20:00                                       ` Greg KH
2012-01-16  8:55                                         ` Ingo Molnar
2011-12-07 22:57             ` [PATCH 09/11] sched: export task_prio to GPL modules Mathieu Desnoyers
2011-12-08  5:40               ` Ingo Molnar

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=20120112140905.GA30377@Krystal \
    --to=mathieu.desnoyers@efficios.com \
    --cc=acme@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lttng-dev@lists.lttng.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox