2014-12-29 12:52:36 +00:00
|
|
|
perf-y += builtin-bench.o
|
2014-12-29 14:13:44 +00:00
|
|
|
perf-y += builtin-annotate.o
|
2015-11-17 13:53:21 +00:00
|
|
|
perf-y += builtin-config.o
|
2014-12-29 14:13:44 +00:00
|
|
|
perf-y += builtin-diff.o
|
|
|
|
perf-y += builtin-evlist.o
|
2013-03-07 12:45:20 +00:00
|
|
|
perf-y += builtin-ftrace.o
|
2014-12-29 14:13:44 +00:00
|
|
|
perf-y += builtin-help.o
|
|
|
|
perf-y += builtin-buildid-list.o
|
|
|
|
perf-y += builtin-buildid-cache.o
|
2017-01-05 18:33:32 +00:00
|
|
|
perf-y += builtin-kallsyms.o
|
2014-12-29 14:13:44 +00:00
|
|
|
perf-y += builtin-list.o
|
|
|
|
perf-y += builtin-record.o
|
|
|
|
perf-y += builtin-report.o
|
|
|
|
perf-y += builtin-stat.o
|
|
|
|
perf-y += builtin-top.o
|
|
|
|
perf-y += builtin-script.o
|
|
|
|
perf-y += builtin-kvm.o
|
|
|
|
perf-y += builtin-inject.o
|
|
|
|
perf-y += builtin-mem.o
|
2015-02-20 22:16:59 +00:00
|
|
|
perf-y += builtin-data.o
|
2015-12-08 04:21:48 +00:00
|
|
|
perf-y += builtin-version.o
|
2016-09-22 15:36:38 +00:00
|
|
|
perf-y += builtin-c2c.o
|
2021-02-08 20:08:45 +00:00
|
|
|
perf-y += builtin-daemon.o
|
2014-12-29 14:13:44 +00:00
|
|
|
|
perf build: Use libtraceevent from the system
Remove the LIBTRACEEVENT_DYNAMIC and LIBTRACEFS_DYNAMIC make command
line variables.
If libtraceevent isn't installed or NO_LIBTRACEEVENT=1 is passed to the
build, don't compile in libtraceevent and libtracefs support.
This also disables CONFIG_TRACE that controls "perf trace".
CONFIG_LIBTRACEEVENT is used to control enablement in Build/Makefiles,
HAVE_LIBTRACEEVENT is used in C code.
Without HAVE_LIBTRACEEVENT tracepoints are disabled and as such the
commands kmem, kwork, lock, sched and timechart are removed. The
majority of commands continue to work including "perf test".
Committer notes:
Fixed up a tools/perf/util/Build reject and added:
#include <traceevent/event-parse.h>
to tools/perf/util/scripting-engines/trace-event-perl.c.
Committer testing:
$ rpm -qi libtraceevent-devel
Name : libtraceevent-devel
Version : 1.5.3
Release : 2.fc36
Architecture: x86_64
Install Date: Mon 25 Jul 2022 03:20:19 PM -03
Group : Unspecified
Size : 27728
License : LGPLv2+ and GPLv2+
Signature : RSA/SHA256, Fri 15 Apr 2022 02:11:58 PM -03, Key ID 999f7cbf38ab71f4
Source RPM : libtraceevent-1.5.3-2.fc36.src.rpm
Build Date : Fri 15 Apr 2022 10:57:01 AM -03
Build Host : buildvm-x86-05.iad2.fedoraproject.org
Packager : Fedora Project
Vendor : Fedora Project
URL : https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/
Bug URL : https://bugz.fedoraproject.org/libtraceevent
Summary : Development headers of libtraceevent
Description :
Development headers of libtraceevent-libs
$
Default build:
$ ldd ~/bin/perf | grep tracee
libtraceevent.so.1 => /lib64/libtraceevent.so.1 (0x00007f1dcaf8f000)
$
# perf trace -e sched:* --max-events 10
0.000 migration/0/17 sched:sched_migrate_task(comm: "", pid: 1603763 (perf), prio: 120, dest_cpu: 1)
0.005 migration/0/17 sched:sched_wake_idle_without_ipi(cpu: 1)
0.011 migration/0/17 sched:sched_switch(prev_comm: "", prev_pid: 17 (migration/0), prev_state: 1, next_comm: "", next_prio: 120)
1.173 :0/0 sched:sched_wakeup(comm: "", pid: 3138 (gnome-terminal-), prio: 120)
1.180 :0/0 sched:sched_switch(prev_comm: "", prev_prio: 120, next_comm: "", next_pid: 3138 (gnome-terminal-), next_prio: 120)
0.156 migration/1/21 sched:sched_migrate_task(comm: "", pid: 1603763 (perf), prio: 120, orig_cpu: 1, dest_cpu: 2)
0.160 migration/1/21 sched:sched_wake_idle_without_ipi(cpu: 2)
0.166 migration/1/21 sched:sched_switch(prev_comm: "", prev_pid: 21 (migration/1), prev_state: 1, next_comm: "", next_prio: 120)
1.183 :0/0 sched:sched_wakeup(comm: "", pid: 1602985 (kworker/u16:0-f), prio: 120, target_cpu: 1)
1.186 :0/0 sched:sched_switch(prev_comm: "", prev_prio: 120, next_comm: "", next_pid: 1602985 (kworker/u16:0-f), next_prio: 120)
#
Had to tweak tools/perf/util/setup.py to make sure the python binding
shared object links with libtraceevent if -DHAVE_LIBTRACEEVENT is
present in CFLAGS.
Building with NO_LIBTRACEEVENT=1 uncovered some more build failures:
- Make building of data-convert-bt.c to CONFIG_LIBTRACEEVENT=y
- perf-$(CONFIG_LIBTRACEEVENT) += scripts/
- bpf_kwork.o needs also to be dependent on CONFIG_LIBTRACEEVENT=y
- The python binding needed some fixups and util/trace-event.c can't be
built and linked with the python binding shared object, so remove it
in tools/perf/util/setup.py and exclude it from the list of
dependencies in the python/perf.so Makefile.perf target.
Building without libtraceevent-devel installed uncovered more build
failures:
- The python binding tools/perf/util/python.c was assuming that
traceevent/parse-events.h was always available, which was the case
when we defaulted to using the in-kernel tools/lib/traceevent/ files,
now we need to enclose it under ifdef HAVE_LIBTRACEEVENT, just like
the other parts of it that deal with tracepoints.
- We have to ifdef the rules in the Build files with
CONFIG_LIBTRACEEVENT=y to build builtin-trace.c and
tools/perf/trace/beauty/ as we only ifdef setting CONFIG_TRACE=y when
setting NO_LIBTRACEEVENT=1 in the make command line, not when we don't
detect libtraceevent-devel installed in the system. Simplification here
to avoid these two ways of disabling builtin-trace.c and not having
CONFIG_TRACE=y when libtraceevent-devel isn't installed is the clean
way.
From Athira:
<quote>
tools/perf/arch/powerpc/util/Build
-perf-y += kvm-stat.o
+perf-$(CONFIG_LIBTRACEEVENT) += kvm-stat.o
</quote>
Then, ditto for arm64 and s390, detected by container cross build tests.
- s/390 uses test__checkevent_tracepoint() that is now only available if
HAVE_LIBTRACEEVENT is defined, enclose the callsite with ifder HAVE_LIBTRACEEVENT.
Also from Athira:
<quote>
With this change, I could successfully compile in these environment:
- Without libtraceevent-devel installed
- With libtraceevent-devel installed
- With “make NO_LIBTRACEEVENT=1”
</quote>
Then, finally rename CONFIG_TRACEEVENT to CONFIG_LIBTRACEEVENT for
consistency with other libraries detected in tools/perf/.
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: bpf@vger.kernel.org
Link: http://lore.kernel.org/lkml/20221205225940.3079667-3-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2022-12-05 22:59:39 +00:00
|
|
|
perf-$(CONFIG_LIBTRACEEVENT) += builtin-kmem.o
|
|
|
|
perf-$(CONFIG_LIBTRACEEVENT) += builtin-kwork.o
|
|
|
|
perf-$(CONFIG_LIBTRACEEVENT) += builtin-lock.o
|
|
|
|
perf-$(CONFIG_LIBTRACEEVENT) += builtin-sched.o
|
|
|
|
perf-$(CONFIG_LIBTRACEEVENT) += builtin-timechart.o
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_LIBTRACEEVENT),y)
|
|
|
|
perf-$(CONFIG_TRACE) += builtin-trace.o
|
|
|
|
perf-$(CONFIG_TRACE) += trace/beauty/
|
|
|
|
endif
|
|
|
|
|
2014-12-29 22:52:25 +00:00
|
|
|
perf-$(CONFIG_LIBELF) += builtin-probe.o
|
2014-12-29 14:13:44 +00:00
|
|
|
|
2014-12-29 12:52:36 +00:00
|
|
|
perf-y += bench/
|
2014-12-29 14:03:09 +00:00
|
|
|
perf-y += tests/
|
2014-12-29 14:13:44 +00:00
|
|
|
|
2014-12-30 16:09:15 +00:00
|
|
|
perf-y += perf.o
|
|
|
|
|
2014-12-29 14:13:44 +00:00
|
|
|
paths += -DPERF_HTML_PATH="BUILD_STR($(htmldir_SQ))"
|
|
|
|
paths += -DPERF_INFO_PATH="BUILD_STR($(infodir_SQ))"
|
|
|
|
paths += -DPERF_MAN_PATH="BUILD_STR($(mandir_SQ))"
|
|
|
|
|
|
|
|
CFLAGS_builtin-help.o += $(paths)
|
|
|
|
CFLAGS_builtin-timechart.o += $(paths)
|
2015-12-15 15:39:35 +00:00
|
|
|
CFLAGS_perf.o += -DPERF_HTML_PATH="BUILD_STR($(htmldir_SQ))" \
|
|
|
|
-DPERF_EXEC_PATH="BUILD_STR($(perfexecdir_SQ))" \
|
2017-01-16 15:22:37 +00:00
|
|
|
-DPREFIX="BUILD_STR($(prefix_SQ))"
|
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 15:02:09 +00:00
|
|
|
CFLAGS_builtin-trace.o += -DSTRACE_GROUPS_DIR="BUILD_STR($(STRACE_GROUPS_DIR_SQ))"
|
2016-01-07 11:41:53 +00:00
|
|
|
CFLAGS_builtin-report.o += -DTIPDIR="BUILD_STR($(tipdir_SQ))"
|
2016-01-09 10:16:28 +00:00
|
|
|
CFLAGS_builtin-report.o += -DDOCDIR="BUILD_STR($(srcdir_SQ)/Documentation)"
|
2014-12-29 16:42:46 +00:00
|
|
|
|
2019-02-13 12:32:39 +00:00
|
|
|
perf-y += util/
|
|
|
|
perf-y += arch/
|
|
|
|
perf-y += ui/
|
2023-03-15 08:43:21 +00:00
|
|
|
perf-y += scripts/
|
2014-12-29 23:34:23 +00:00
|
|
|
|
|
|
|
gtk-y += ui/gtk/
|
2024-04-09 02:32:13 +00:00
|
|
|
|
|
|
|
ifdef SHELLCHECK
|
|
|
|
SHELL_TESTS := $(wildcard *.sh)
|
|
|
|
TEST_LOGS := $(SHELL_TESTS:%=%.shellcheck_log)
|
|
|
|
else
|
|
|
|
SHELL_TESTS :=
|
|
|
|
TEST_LOGS :=
|
|
|
|
endif
|
|
|
|
|
|
|
|
$(OUTPUT)%.shellcheck_log: %
|
|
|
|
$(call rule_mkdir)
|
|
|
|
$(Q)$(call echo-cmd,test)shellcheck -s bash -a -S warning "$<" > $@ || (cat $@ && rm $@ && false)
|
|
|
|
|
|
|
|
perf-y += $(TEST_LOGS)
|