Re: [PATCH v11 perf, bpf-next 7/9] perf tools: synthesize PERF_RECORD_* for loaded BPF programs
From: Jiri Olsa <hidden>
Date: 2019-01-22 14:51:27
Also in:
lkml
On Tue, Jan 22, 2019 at 12:31:17PM -0200, Arnaldo Carvalho de Melo wrote:
Em Tue, Jan 22, 2019 at 12:13:20PM -0200, Arnaldo Carvalho de Melo escreveu:quoted
Em Fri, Jan 18, 2019 at 11:46:55AM -0300, Arnaldo Carvalho de Melo escreveu:quoted
Em Thu, Jan 17, 2019 at 08:15:19AM -0800, Song Liu escreveu:quoted
This patch synthesize PERF_RECORD_KSYMBOL and PERF_RECORD_BPF_EVENT for BPF programs loaded before perf-record. This is achieved by gathering information about all BPF programs via sys_bpf.DittoThis is breaking 'perf sched', see below, the fix seems trivial: [root@quaco ~]# perf sched record -a sleep 2 [ perf record: Woken up 1 times to write data ] 0x5b60 [0x138]: failed to process type: 17 [ perf record: Captured and wrote 1.539 MB perf.data ] [root@quaco ~]# perf sched lat 0x5b60 [0x138]: failed to process type: 17 Failed to process events, error -22 [root@quaco ~]#So: perf_session__process_event (event->header.type = 17 (PERF_RECORD_KSYMBOL) if (tool->ordered_events) ret = perf_evlist__parse_sample_timestamp(evlist, event, ×tamp); if (ret && ret != -1) return ret; So it returns here with -EFAULT, i.e. this is failing: int perf_evlist__parse_sample_timestamp(struct perf_evlist *evlist, union perf_event *event, u64 *timestamp) { struct perf_evsel *evsel = perf_evlist__event2evsel(evlist, event); if (!evsel) return -EFAULT; return perf_evsel__parse_sample_timestamp(evsel, event, timestamp); } It isn't mapping the event ID it finds back to an evsel.. Jiri, ideas? This is happening so far only for 'perf sched', perf record with two events works.
I saw also perf mem failing because of this.. will check jirka