Re: [PATCH v2 0/7] perf ctf: Convert comm, fork and exit events to CTF

From: pi3orama
Date: Fri Jun 24 2016 - 08:44:14 EST




发自我的 iPhone

> 在 2016年6月24日,下午8:41,Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> 写道:
>
> Em Fri, Jun 24, 2016 at 02:29:07PM +0200, Jiri Olsa escreveu:
>> On Fri, Jun 24, 2016 at 11:22:05AM +0000, Wang Nan wrote:
>>> After converting perf.data to CTF, we lost pid-tid-comm mapping. Which
>>> makes inconvience. For example, in perf script output we know which
>>> process issue an event like this:
>>>
>>> compiz 19361 [001] 3275709.313929: raw_syscalls:sys_exit: NR 7 = 0
>>>
>>> After converting to CTF, we only get this:
>>>
>>> [3275709.313929985] (+0.110646118) raw_syscalls:sys_exit: { cpu_id = 1 }, { perf_ip = 0xFFFFFFFF8107B2E8, perf_tid = 19361, perf_pid = 19361, perf_id = 18920, perf_period = 1, common_type = 16, common_flags = 0, common_preempt_count = 1, common_pid = 19361, id = 7, ret = 0 }
>>>
>>> Currently, if we want to find the name and parent of a process, we
>>> have to collect 'sched:sched_switch' event.
>>>
>>> This patch set adds a '--all' option to 'perf convert', converts comm,
>>> fork and exit events to CTF output. CTF user now can track the mapping
>>> by their own.
>>>
>>> v1 -> v2: Report number of sample and non-sample events when finish.
>>> rename opts.non_sample to opts.all.
>>>
>>> Wang Nan (7):
>>> perf ctf: Add value_set_string() helper
>>> perf ctf: Pass convert options through opts structure
>>> perf ctf: Add 'all' option
>>> perf ctf: Prepare collect non-sample events
>>> perf ctf: Generate comm event to CTF output
>>> perf ctf: Add '--all' option for 'perf data convert'
>>> perf ctf: Generate fork and exit events to CTF output
>>
>> I can't compile unless I can include config.h
>
> Waiting for this fix to proceed, but it seems we don't have this covered
> in 'build-test', right? ;-)
>

CTF support is off by default. When can we
turn it on like other options?

Thank you.

> - Arnaldo
>
>> [jolsa@krava perf]$ make LIBBABELTRACE_DIR=/opt/libbabeltrace/ LIBBABELTRACE=1
>> BUILD: Doing 'make -j4' parallel build
>> CC util/data-convert-bt.o
>> util/data-convert-bt.c: In function ‘convert__config’:
>> util/data-convert-bt.c:1299:19: error: implicit declaration of function ‘perf_config_u64’ [-Werror=implicit-function-declaration]
>> c->queue_size = perf_config_u64(var, value);
>> ^
>> util/data-convert-bt.c:1299:3: error: nested extern declaration of ‘perf_config_u64’ [-Werror=nested-externs]
>> c->queue_size = perf_config_u64(var, value);
>> ^
>> util/data-convert-bt.c: In function ‘bt_convert__perf2ctf’:
>> util/data-convert-bt.c:1332:2: error: implicit declaration of function ‘perf_config’ [-Werror=implicit-function-declaration]
>> perf_config(convert__config, &c);
>> ^
>> util/data-convert-bt.c:1332:2: error: nested extern declaration of ‘perf_config’ [-Werror=nested-externs]
>> cc1: all warnings being treated as errors
>>
>>
>> your compiler's not that strict I guess ;-)
>> I'll post it shortly
>>
>> jirka
>>
>> ---
>> diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
>> index 79082782e7d2..4b68e7b9ee0c 100644
>> --- a/tools/perf/util/data-convert-bt.c
>> +++ b/tools/perf/util/data-convert-bt.c
>> @@ -26,6 +26,7 @@
>> #include "evlist.h"
>> #include "evsel.h"
>> #include "machine.h"
>> +#include "config.h"
>>
>> #define pr_N(n, fmt, ...) \
>> eprintf(n, debug_data_convert, fmt, ##__VA_ARGS__)