Re: [PATCH 0/9] perf: Adding better precise_ip field handling

From: Ingo Molnar
Date: Mon May 13 2013 - 15:43:21 EST



* Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Sat, May 11, 2013 at 09:50:08AM +0200, Ingo Molnar wrote:
> > That's really a red herring: there's absolutely no reason why the
> > kernel could not pass back the level of precision it provided.
>
> All I've been saying is that doing random precision without feedback is
> confusing.

I agree with that.

> We also don't really have a good feedback channel for this kind of
> thing. The best I can come up with is tagging each and every sample with
> the quality it represents. I think we can do with only one extra
> PERF_RECORD_MISC bit, but it looks like we're quickly running out of
> those things.

Hm, how about passing precision back to user-space at creation time, in
the perf_attr data structure? There's no need to pass it back in every
sample, precision will not really change during the life-time of an event.

> But I think the biggest problem is PEBS's inability do deal with REP
> prefixes; see this email from Stephane:
> https://lkml.org/lkml/2011/2/1/177
>
> It is really unfortunate for PEBS to have such a side-effect; but it
> makes all memset/memcpy/memmove things appear like they have no cost.
> I'm very sure that will surprise a number of people.

I'd expect PEBS to get gradually better.

Note that at least for user-space, REP MOVS is getting rarer. libc uses
SSE based memcpy/memset variants - which is not miscounted by PEBS. The
kernel still uses REP MOVS - but it's a special case because it cannot
cheaply use vector registers.

The vast majority of code gets measured by cycles:pp more accurately than
cycles.

We could try and see how many people complain. It's not like it's hard to
undo such a change of the default event?

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/