mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
perf script python: Add the 'ins_lat' field to event handler
For example, when using the Alder Lake PMU memory load event, the instruction latency is stored in 'ins_lat', while the cache latency is stored in 'weight'. This patch reports the 'ins_lat' field for Python scripting. Committer testing: On a Rocket Lake Refresh Intel machine (14th gen): root@number:~# grep -m1 'model name' /proc/cpuinfo model name : Intel(R) Core(TM) i7-14700K root@number:~# perf mem record -a sleep 5 Memory events are enabled on a subset of CPUs: 16-27 [ perf record: Woken up 85 times to write data ] [ perf record: Captured and wrote 41.236 MB perf.data (191390 samples) ] root@number:~# perf evlist -v cpu_atom/mem-loads,ldlat=30/P: type: 10 (cpu_atom), size: 136, config: 0x5d0 (mem-loads), { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ADDR|CPU|PERIOD|IDENTIFIER|DATA_SRC|WEIGHT_STRUCT, read_format: ID|LOST, disabled: 1, inherit: 1, freq: 1, precise_ip: 3, sample_id_all: 1, { bp_addr, config1 }: 0x1f cpu_atom/mem-stores/P: type: 10 (cpu_atom), size: 136, config: 0x6d0 (mem-stores), { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ADDR|CPU|PERIOD|IDENTIFIER|DATA_SRC|WEIGHT_STRUCT, read_format: ID|LOST, disabled: 1, inherit: 1, freq: 1, precise_ip: 3, sample_id_all: 1 dummy:u: type: 1 (software), size: 136, config: 0x9 (PERF_COUNT_SW_DUMMY), { sample_period, sample_freq }: 1, sample_type: IP|TID|TIME|ADDR|CPU|IDENTIFIER|DATA_SRC|WEIGHT_STRUCT, read_format: ID|LOST, inherit: 1, exclude_kernel: 1, exclude_hv: 1, mmap: 1, comm: 1, task: 1, mmap_data: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1 root@number:~# Now generate a python script to then dump the dictionary that now needs to have that 'ins_lat' field: root@number:~# perf script --gen python generated Python script: perf-script.py root@number:~# vim perf-script.py root@number:~# perf script -s perf-script.py | head -40 in trace_begin in trace_end root@number:~# vim perf-script.py Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Zixian Cai <fzczx123@gmail.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ben Gainey <ben.gainey@arm.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paran Lee <p4ranlee@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: https://lore.kernel.org/r/20240809080137.3590148-1-fzczx123@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
9e9d0a79d3
commit
05673c42f7
@ -888,6 +888,8 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
|
||||
set_sample_read_in_dict(dict_sample, sample, evsel);
|
||||
pydict_set_item_string_decref(dict_sample, "weight",
|
||||
PyLong_FromUnsignedLongLong(sample->weight));
|
||||
pydict_set_item_string_decref(dict_sample, "ins_lat",
|
||||
PyLong_FromUnsignedLong(sample->ins_lat));
|
||||
pydict_set_item_string_decref(dict_sample, "transaction",
|
||||
PyLong_FromUnsignedLongLong(sample->transaction));
|
||||
set_sample_datasrc_in_dict(dict_sample, sample);
|
||||
@ -1317,7 +1319,7 @@ static void python_export_sample_table(struct db_export *dbe,
|
||||
struct tables *tables = container_of(dbe, struct tables, dbe);
|
||||
PyObject *t;
|
||||
|
||||
t = tuple_new(27);
|
||||
t = tuple_new(28);
|
||||
|
||||
tuple_set_d64(t, 0, es->db_id);
|
||||
tuple_set_d64(t, 1, es->evsel->db_id);
|
||||
@ -1346,6 +1348,7 @@ static void python_export_sample_table(struct db_export *dbe,
|
||||
tuple_set_s32(t, 24, es->sample->flags);
|
||||
tuple_set_d64(t, 25, es->sample->id);
|
||||
tuple_set_d64(t, 26, es->sample->stream_id);
|
||||
tuple_set_u32(t, 27, es->sample->ins_lat);
|
||||
|
||||
call_object(tables->sample_handler, t, "sample_table");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user