• Arnaldo Carvalho de Melo's avatar
    perf trace: Auto bump rlimit(MEMLOCK) for eBPF maps sake · c3e78a34
    Arnaldo Carvalho de Melo authored
    Circa v5.2 this started to fail:
    
      # perf trace -e /wb/augmented_raw_syscalls.o
      event syntax error: '/wb/augmented_raw_syscalls.o'
                           \___ Operation not permitted
    
      (add -v to see detail)
      Run 'perf list' for a list of valid events
    
       Usage: perf trace [<options>] [<command>]
          or: perf trace [<options>] -- <command> [<options>]
          or: perf trace record [<options>] [<command>]
          or: perf trace record [<options>] -- <command> [<options>]
    
          -e, --event <event>   event/syscall selector. use 'perf list' to list available events
      #
    
    In verbose mode we some -EPERM when creating a BPF map:
    
      # perf trace -v -e /wb/augmented_raw_syscalls.o
      <SNIP>
      libbpf: failed to create map (name: '__augmented_syscalls__'): Operation not permitted
      libbpf: failed to load object '/wb/augmented_raw_syscalls.o'
      bpf: load objects failed: err=-1: (Operation not permitted)
      event syntax error: '/wb/augmented_raw_syscalls.o'
                           \___ Operation not permitted
    
      (add -v to see detail)
      Run 'perf list' for a list of valid events
    
       Usage: perf trace [<options>] [<command>]
          or: perf trace [<options>] -- <command> [<options>]
          or: perf trace record [<options>] [<command>]
          or: perf trace record [<options>] -- <command> [<options>]
    
          -e, --event <event>   event/syscall selector. use 'perf list' to list available events
      #
    
    If we bumped 'ulimit -l 128' to get it from the 64k default to double that, it
    worked, so use the recently added rlimit__bump_memlock() helper:
    
      # perf trace -e /wb/augmented_raw_syscalls.o -e open*,*sleep sleep 1
           0.000 ( 0.007 ms): sleep/28042 openat(dfd: CWD, filename: "/etc/ld.so.cache", flags: RDONLY|CLOEXEC) = 3
           0.022 ( 0.004 ms): sleep/28042 openat(dfd: CWD, filename: "/lib64/libc.so.6", flags: RDONLY|CLOEXEC) = 3
           0.201 ( 0.007 ms): sleep/28042 openat(dfd: CWD, filename: "", flags: RDONLY|CLOEXEC)                 = 3
           0.241 (1000.421 ms): sleep/28042 nanosleep(rqtp: 0x7ffd6c3e6ed0)                                       = 0
      #
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lkml.kernel.org/n/tip-j6f2ioa6hj9dinzpjvlhcjoc@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c3e78a34
builtin-trace.c 115 KB