Messages in this thread Patch in this message | | | From | Wang Nan <> | Subject | [RFC PATCH] perf tools: Don't set inherit bit for system wide evsel | Date | Fri, 23 Oct 2015 10:43:49 +0000 |
| |
Inherit bit is useless for a system wide evsel [1]. Further kernel improvements are giving more constrain [2] on inherit events. This patch set inherit bit to 0 to avoid potential constrains.
[1] http://lkml.kernel.org/r/20151022124142.GQ17308@twins.programming.kicks-ass.net [2] http://lkml.kernel.org/r/1445559014-4667-1-git-send-email-ast@kernel.org
Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexei Starovoitov <ast@plumgrid.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Li Zefan <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/n/ebpf-0tgilipxoo6fiebcxu3ft866@git.kernel.org ---
evsel->system_wide doesn't correct reflect whether this evsel is system wide or not, so checks pid when invoking perf_event_open, and it is always correct.
--- tools/perf/util/evsel.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 5566b16..e2d6c9a 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -1337,6 +1337,7 @@ retry_sample_id: for (thread = 0; thread < nthreads; thread++) { int group_fd; + struct perf_event_attr attr; if (!evsel->cgrp && !evsel->system_wide) pid = thread_map__pid(threads, thread); @@ -1346,7 +1347,10 @@ retry_open: pr_debug2("sys_perf_event_open: pid %d cpu %d group_fd %d flags %#lx\n", pid, cpus->map[cpu], group_fd, flags); - FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, + attr = evsel->attr; + if (pid == -1) + attr.inherit = 0; + FD(evsel, cpu, thread) = sys_perf_event_open(&attr, pid, cpus->map[cpu], group_fd, flags); -- 1.8.3.4
| |