[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4FB32032.3000509@gmail.com>
Date: Tue, 15 May 2012 21:34:10 -0600
From: David Ahern <dsahern@...il.com>
To: Stephane Eranian <eranian@...gle.com>
CC: linux-kernel@...r.kernel.org, peterz@...radead.org, mingo@...e.hu,
acme@...hat.com
Subject: Re: [PATCH v2 4/5] perf record: add meta-data support for pipe-mode
On 5/15/12 5:28 AM, Stephane Eranian wrote:
> This patch adds the meta-data header support for perf record
> when used in pipe mode: perf record -o -
>
> Up until now, meta-data was only available when perf record
> was used in "regular" mode, i.e., generating a perf.data file.
> For users depending on pipe mode, no host, event header information
> was gathered. This patch addresses this limitation.
>
> The difficulty in pipe mode is that information needs to be written
> sequentially to the pipe. Meta data headers are usually generated
> (and also expected) at the beginning of the file (or piped output).
> To solve this problem, we introduce new synthetic record types,
> one for each meta-data type. The approach is similar to what
> is already used for BUILD_ID and TRACING_DATA.
>
> We have modified util/header.c such that the same routines are used
> to generate and read the meta-data information regardless of pipe-mode
> vs. regular mode. To make this work, we added a new struct called
> feat_fd which encapsulates all the information necessary to read or
> write meta-data information to a file/pipe or from a file/pipe.
>
> It should be noted that there is a limitation with the current
> perf in terms of endianess in pipe mode. Perf assumes the records
> are generated using the same endianess during collection and
> analysis. That is always the case with the example shown below.
> However, one could also do:
> $ perf record -o - noploop 2 | perf inject -b>perf.data
> $ cat perf.data | perf report -i -
>
> With this patch, it is possible to get:
> $ perf record -o - noploop 2 | perf inject -b | perf report -i -
> # ========
> # captured on: Fri Jan 20 18:13:55 2012
> # ========
> #
> # hostname : quad
> # os release : 3.2.0-rc7-tip
> # perf version : 3.2.0
> # arch : x86_64
> # nrcpus online : 4
> # nrcpus avail : 4
> # cpudesc : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
> # cpuid : GenuineIntel,6,15,11
> # total memory : 8092884 kB
> ...
> # HEADER_CPU_TOPOLOGY info available, use -I to display
> noploop for 2 seconds
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.084 MB - (~3677 samples) ]
> 99.80% noploop noploop [.] noploop
> 0.19% noploop [kernel.kallsyms] [k] radix_tree_gang_lookup
>
> Signed-off-by: Stephane Eranian<eranian@...gle.com>
I love the feature and it works nicely, but there has been push back on
adding more synthesized events. Also the size of the patch is a bit
much to take in. If there is no objection to the synthesized can you
break the patch up -- e.g., introduce the events in one, synthesis and
processing functions in another, plug into the commands, ...
David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists