Re: [patch 0/3] [Announcement] Performance Counters for Linux

Ingo Molnar
2008-12-05T08:43:11Z

* David Miller <davem@davemloft.net> wrote:

> From: Ingo Molnar <mingo@elte.hu>
> Date: Fri, 5 Dec 2008 09:24:31 +0100
>
> > Right now we begun with the most trivial ones:
> >
> > enum perf_record_type {
> > PERF_RECORD_SIMPLE,
> > PERF_RECORD_IRQ,
> > };
> >
> > ... but it would be natural to do a PERF_RECORD_GP_REGISTERS as well.
> > Perhaps even a PERF_RECORD_STACKTRACE using the sysprof facilities, to do
> > a hierarchic multi-dimension profile that sysprof does so nicely.
>
> Maybe even add something like PERF_RECORD_THE_MOON...
>
> see how rediculious this is?

Note that more notification record types is actually where latest
hardware is going: for example in Nehalem there's a PEBS notification
record type that has cachemiss latency included in the record. I.e. we
can get profiles with _cachemiss latency_ included (as measured from
issuing the instruction to completion).

You cannot get that information out of any 'stop the task' interface ...

Stopping a task is way too intrusive, i dont know why you keep harping on
it. Listen to the scheduler guys: it's a non-starter.

> It's not your business in the kernel to decide what things are useful.
> The monitor can stop the task and inspect whatever it wants with
> _existing_ facilities. We need none of this stuff.

You try to ridicule our efforts, while you have not answered our
technical arguments in substance.

Please let me repeat: it's a _fundamental_ thesis of performance
instrumentation to not disturb the monitored context. Your insistence on
_stopping_ the monitored task breaks that fundamental axiom!

Stopping a task destroys the characteristics of many, many workloads. To
get a reasonable histogram out of a system a highlevel event count of
thousands a second is desired (but hundreds of them are a minimum, to get
any reasonable coverage).

But injecting even hundreds of artificialy task-stoppages will destroy
the true behavior of many reference workloads we care about in Linux!

Stopping the task is a fundamental and obvious design failure of perfmon.

Ingo