Re: [PATCH v2 1/5] perf inject: fix broken perf inject -b

From: David Ahern
Date: Tue May 15 2012 - 21:59:06 EST


On 5/15/12 5:28 AM, Stephane Eranian wrote:
perf inject -b was broken. It would not inject any build_id
into the stream. Furthermore, it would strip samples from the
stream.

The reason was a missing initialization of the event attribute
structure. The perf_tool.tool.attr() callback was pointing to
a simple repipe. But there was no initialization of the internal
data structures to keep track of events and event ids. That later
caused event id lookups to fail, and sample would get removed.

The patch simply adds back the call to perf_event__process_attr()
to initialize the evlist structure and now build_ids are again
injected.

Signed-off-by: Stephane Eranian<eranian@xxxxxxxxxx>
---
tools/perf/builtin-inject.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 09c1061..3beab48 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -60,6 +60,11 @@ static int perf_event__repipe_tracing_data_synth(union perf_event *event,
static int perf_event__repipe_attr(union perf_event *event,
struct perf_evlist **pevlist __used)

The _used can be dropped now that pevlist is used.

{
+ int ret;
+ ret = perf_event__process_attr(event, pevlist);
+ if (ret)
+ return ret;
+
return perf_event__repipe_synth(NULL, event, NULL);
}


The change seems right, but I could not recreate the dropped events. In both cases running:

perf record -o - -m 256 /tmp/a.sh | perf inject -b | perf report -i - -D

where /tmp/a.sh is:

#!/bin/sh
cd /opt/sw/ahern/kernels/kernel.git
make O=/tmp/kbuild -j 32 >/dev/null 2>&1

just to give it some "real work."

With your patch:
TOTAL events: 284211
MMAP events: 69236
COMM events: 10863
EXIT events: 22858
THROTTLE events: 11
UNTHROTTLE events: 11
FORK events: 11428
SAMPLE events: 169779
ATTR events: 1
EVENT_TYPE events: 1
BUILD_ID events: 23
cycles stats:
TOTAL events: 284186
MMAP events: 69236
COMM events: 10863
EXIT events: 22858
THROTTLE events: 11
UNTHROTTLE events: 11
FORK events: 11428
SAMPLE events: 169779


Current acme/core:
TOTAL events: 288990
MMAP events: 69236
COMM events: 10863
EXIT events: 22858
THROTTLE events: 20
UNTHROTTLE events: 20
FORK events: 11428
SAMPLE events: 174538
ATTR events: 1
EVENT_TYPE events: 1
BUILD_ID events: 25
cycles stats:
TOTAL events: 288963
MMAP events: 69236
COMM events: 10863
EXIT events: 22858
THROTTLE events: 20
UNTHROTTLE events: 20
FORK events: 11428
SAMPLE events: 174538


David

[1] Both tests have Namhyung's patch:
https://lkml.org/lkml/2012/5/15/280
--
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/