• Arnaldo Carvalho de Melo's avatar
    perf evsel: Handle EACCESS + perf_event_paranoid=2 in fallback() · 08094828
    Arnaldo Carvalho de Melo authored
    Now with the default for the kernel.perf_event_paranoid sysctl being 2 [1]
    we need to fall back to :u, i.e. to set perf_event_attr.exclude_kernel
    to 1.
    
    Before:
    
      [acme@jouet linux]$ perf record usleep 1
      Error:
      You may not have permission to collect stats.
    
      Consider tweaking /proc/sys/kernel/perf_event_paranoid,
      which controls use of the performance events system by
      unprivileged users (without CAP_SYS_ADMIN).
    
      The current value is 2:
    
        -1: Allow use of (almost) all events by all users
      >= 0: Disallow raw tracepoint access by users without CAP_IOC_LOCK
      >= 1: Disallow CPU event access by users without CAP_SYS_ADMIN
      >= 2: Disallow kernel profiling by users without CAP_SYS_ADMIN
      [acme@jouet linux]$
    
    After:
    
      [acme@jouet linux]$ perf record usleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.016 MB perf.data (7 samples) ]
      [acme@jouet linux]$ perf evlist
      cycles:u
      [acme@jouet linux]$ perf evlist -v
      cycles:u: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, exclude_kernel: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
      [acme@jouet linux]$
    
    And if the user turns on verbose mode, an explanation will appear:
    
      [acme@jouet linux]$ perf record -v usleep 1
      Warning:
      kernel.perf_event_paranoid=2, trying to fall back to excluding kernel samples
      mmap size 528384B
      [ perf record: Woken up 1 times to write data ]
      Looking at the vmlinux_path (8 entries long)
      Using /lib/modules/4.6.0-rc7+/build/vmlinux for symbols
      [ perf record: Captured and wrote 0.016 MB perf.data (7 samples) ]
      [acme@jouet linux]$
    
    [1] 0161028b ("perf/core: Change the default paranoia level to 2")
    Reported-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/n/tip-b20jmx4dxt5hpaa9t2rroi0o@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    08094828
evsel.c 59.3 KB