public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: eranian@gmail.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Performance analysis under Linux (was: Re: [GIT PULL] Performance Counters for Linux)
Date: Mon, 22 Jun 2009 15:10:50 +0200	[thread overview]
Message-ID: <20090622131050.GA600@elte.hu> (raw)
In-Reply-To: <7c86c4470906181458l6985e13av6c503b34e4f3b1d3@mail.gmail.com>

* stephane eranian <eranian@googlemail.com> wrote:

[...]
> Those represent very advanced and very useful PMUs. Having
> implemented user and kernel support for both of them, I can attest
> that they challenge any interfaces. But perfmon is the proof that
> those can be exposed with their full strength thru a generic
> kernel API. Therefore, I am relatively hopeful, there should be a
> way to expose them through your API.

The thing is, in my opinion the main challenge is not in and was
never in exposing as many PMU features as possible.

The main challenge is in:

   _also making it a useful solution to developers/users_

That is a key area where IMO perfcounters and perfmon differs. The 
challenge of performance analysis is in:

  1) Making the tool usage patterns as natural as possible. Make the
     tools transparent and configuration-less by default.

  2) Offer people the same rough set of common and robust features
     regardless on what CPU (or even architecture) they are on.
     Adding some CPU-specific feature (without generalizing it at
     the same time) _never_ worked well enough.

  3) Visualize the information in a rich way, making it work in as
     many development workflows as possible.

tools/perf/ offers the seeds to that - it is a "full solution" 
attempt at sane performance analysis tooling. It tries to be 
'Oprofile done right' and 'pfmon done right'.

'perf' tries to keep the best aspects of oprofile (its user-tooling 
work-flow in essence), based on a robust and tightly integrated 
kernel side - and tries to expand the range and type of analysis 
that can be done.

I do claim we had few if any sane performance analysis tools before 
under Linux, and i think we are still in the stone ages and still 
have a lot of work to do in this area.

As a sidenote, IMO Linux has become somewhat vulnerable to creeping 
featurities in the past few years partly because we simply dont have 
good enough tools that can _prove_ it in an easy way that a patch is 
having bad effects to performance.

I see many kernel developers using oprofile only as a last-ditch 
option - and that's a pity - running a profiler and interpreting its 
results should be as easy as editing a file or committing a change.

We've only scratched the surface really, and the main road ahead us 
is IMO not just in terms of PMU hw feature support depth (which is 
relatively straightforward), but in terms of walking the full 
distance and bringing it all to developers and putting it on their 
desk.

So for every "will you support advanced PMU feature X, Y and Z" 
question you ask, the first-level answer is: 'please show the 
developer usecase and integrate it into our tools so we can see how 
it all works and how useful it is'.

"A tool might want to do this" is not a good enough answer. We now 
have a working OSS tool-space with 'perf' where such arguments for 
more PMU features can be made in very specific terms: patches, 
numbers and comparisons. Actual hands-on utility, happy developers 
and faster apps is what matters in the end - not just the list of 
PMU features we expose.

	Ingo

      reply	other threads:[~2009-06-22 13:11 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-11 16:03 [GIT PULL] Performance Counters for Linux Ingo Molnar
2009-06-11 16:17 ` Christoph Hellwig
2009-06-11 16:26   ` Linus Torvalds
2009-06-11 16:34     ` Marcel Holtmann
2009-06-11 16:38       ` Linus Torvalds
2009-06-11 16:46         ` Christoph Hellwig
2009-06-11 16:54           ` Linus Torvalds
2009-06-11 16:47         ` Marcel Holtmann
2009-06-11 18:04         ` David Newall
2009-06-11 16:52     ` Al Viro
2009-06-11 16:56       ` Peter Zijlstra
2009-06-11 17:00         ` Christoph Hellwig
2009-06-11 17:05           ` Ray Lee
2009-06-11 17:08             ` Marcel Holtmann
2009-06-11 17:12             ` Al Viro
2009-06-11 17:22               ` Ray Lee
2009-06-11 17:06           ` Linus Torvalds
2009-06-11 17:59             ` Pekka Enberg
2009-06-11 18:10               ` David Newall
2009-06-11 18:21                 ` Linus Torvalds
2009-06-11 18:38                   ` David Newall
2009-06-11 18:44                     ` Linus Torvalds
2009-06-11 19:07                       ` David Newall
2009-06-11 19:23                         ` Linus Torvalds
2009-06-11 19:29                           ` Linus Torvalds
2009-06-11 19:35                             ` David Newall
2009-06-11 19:49                               ` Linus Torvalds
2009-06-12  1:43                                 ` Robert Richter
2009-06-12  3:21                                 ` David Newall
2009-06-11 19:37                           ` David Newall
2009-06-11 18:51                   ` Christoph Hellwig
2009-06-11 19:05                   ` Marcel Holtmann
2009-06-11 18:24             ` Martin Bligh
2009-06-11 18:34               ` Linus Torvalds
2009-06-11 20:23                 ` Ingo Molnar
2009-06-11 20:49                   ` Marcel Holtmann
2009-06-11 21:08                     ` Sam Ravnborg
2009-06-11 21:17                       ` Marcel Holtmann
2009-06-11 21:26                         ` Sam Ravnborg
2009-06-11 22:18                           ` Jiri Slaby
2009-06-11 22:27                             ` Linus Torvalds
2009-06-11 22:38                               ` Alan Cox
2009-06-11 22:49                                 ` Linus Torvalds
2009-06-12  7:35                                   ` Alan Cox
2009-06-11 23:19                               ` Al Viro
2009-06-11 23:25                                 ` Linus Torvalds
2009-06-12  0:26                                   ` Al Viro
2009-06-12  2:58                                     ` Linus Torvalds
2009-06-12  4:05                                       ` Al Viro
2009-06-11 21:59                         ` Steven Rostedt
2009-06-12 10:19                           ` Jörn Engel
2009-06-11 21:14                     ` Ingo Molnar
2009-06-28  1:19                   ` Felipe Contreras
2009-06-11 19:58             ` Andrew Morton
2009-06-11 20:09               ` Linus Torvalds
2009-06-12  4:07             ` Kyle McMartin
2009-06-11 16:58       ` Linus Torvalds
2009-06-11 18:50     ` Sam Ravnborg
2009-06-15 13:41       ` Giacomo A. Catenazzi
2009-06-15 15:18         ` Sam Ravnborg
2009-06-12  9:56 ` stephane eranian
2009-06-12 10:28   ` Ingo Molnar
2009-06-18 21:58     ` stephane eranian
2009-06-22 13:10       ` Ingo Molnar [this message]

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=20090622131050.GA600@elte.hu \
    --to=mingo@elte.hu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=eranian@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulus@samba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox