perf tools: Add documentation for BPF event selection
authorChangbin Du <changbin.du@gmail.com>
Fri, 1 Feb 2019 13:46:51 +0000 (21:46 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 6 Feb 2019 13:00:40 +0000 (10:00 -0300)
Add documentation for how to pass a BPF program as a perf event.

Signed-off-by: Changbin Du <changbin.du@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20190201134651.12373-1-changbin.du@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/perf-config.txt
tools/perf/Documentation/perf-record.txt

index 4ac7775fbc114023c57b294f9dcb5539cab31b49..86f3dcc15f8375726f0ed90d333e79e3cfadb669 100644 (file)
@@ -120,6 +120,10 @@ Given a $HOME/.perfconfig like this:
                children = true
                group = true
 
+       [llvm]
+               dump-obj = true
+               clang-opt = -g
+
 You can hide source code of annotate feature setting the config to false with
 
        % perf config annotate.hide_src_code=true
@@ -553,6 +557,33 @@ trace.*::
        trace.show_zeros::
                Do not suppress syscall arguments that are equal to zero.
 
+llvm.*::
+       llvm.clang-path::
+               Path to clang. If omit, search it from $PATH.
+
+       llvm.clang-bpf-cmd-template::
+               Cmdline template. Below lines show its default value. Environment
+               variable is used to pass options.
+               "$CLANG_EXEC -D__KERNEL__ $CLANG_OPTIONS $KERNEL_INC_OPTIONS \
+               -Wno-unused-value -Wno-pointer-sign -working-directory \
+               $WORKING_DIR  -c $CLANG_SOURCE -target bpf -O2 -o -"
+
+       llvm.clang-opt::
+               Options passed to clang.
+
+       llvm.kbuild-dir::
+               kbuild directory. If not set, use /lib/modules/`uname -r`/build.
+               If set to "" deliberately, skip kernel header auto-detector.
+
+       llvm.kbuild-opts::
+               Options passed to 'make' when detecting kernel header options.
+
+       llvm.dump-obj::
+               Enable perf dump BPF object files compiled by LLVM.
+
+       llvm.opts::
+               Options passed to llc.
+
 SEE ALSO
 --------
 linkperf:perf[1]
index d232b13ea7137c493304853426cba67a514383f3..02b4aa2621e72a73d0b3e79a45567f9eebb8f6b0 100644 (file)
@@ -88,6 +88,20 @@ OPTIONS
           If you want to profile write accesses in [0x1000~1008), just set
           'mem:0x1000/8:w'.
 
+        - a BPF source file (ending in .c) or a precompiled object file (ending
+          in .o) selects one or more BPF events.
+          The BPF program can attach to various perf events based on the ELF section
+          names.
+
+          When processing a '.c' file, perf searches an installed LLVM to compile it
+          into an object file first. Optional clang options can be passed via the
+          '--clang-opt' command line option, e.g.:
+
+            perf record --clang-opt "-DLINUX_VERSION_CODE=0x50000" \
+                        -e tests/bpf-script-example.c
+
+          Note: '--clang-opt' must be placed before '--event/-e'.
+
        - a group of events surrounded by a pair of brace ("{event1,event2,...}").
          Each event is separated by commas and the group should be quoted to
          prevent the shell interpretation.  You also need to use --group on