mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 14:12:07 +02:00
perf test: Add a new shell test for perf ftrace
$ sudo ./perf test ftrace -vv
86: perf ftrace tests:
--- start ---
test child forked, pid 1772223
perf ftrace list test
syscalls for sleep:
__x64_sys_nanosleep
__ia32_sys_nanosleep
__x64_sys_clock_nanosleep
__ia32_sys_clock_nanosleep
perf ftrace list test [Success]
perf ftrace trace test
# tracer: function_graph
#
# CPU DURATION FUNCTION CALLS
# | | | | | | |
0) | __x64_sys_clock_nanosleep() {
0) | common_nsleep() {
0) | hrtimer_nanosleep() {
0) | do_nanosleep() {
perf ftrace trace test [Success]
perf ftrace latency test
target function: __x64_sys_clock_nanosleep
# DURATION | COUNT | GRAPH |
32 - 64 ms | 1 | ############################################## |
perf ftrace latency test [Success]
perf ftrace profile test
# Total (us) Avg (us) Max (us) Count Function
100136.400 100136.400 100136.400 1 __x64_sys_clock_nanosleep
100135.200 100135.200 100135.200 1 common_nsleep
100134.700 100134.700 100134.700 1 hrtimer_nanosleep
100133.700 100133.700 100133.700 1 do_nanosleep
100130.600 100130.600 100130.600 1 schedule
166.868 55.623 80.299 3 scheduler_tick
5.926 5.926 5.926 1 native_smp_send_reschedule
301.941 301.941 301.941 1 __x64_sys_execve
295.786 295.786 295.786 1 do_execveat_common.isra.0
71.397 35.699 46.403 2 bprm_execve
2.519 1.260 1.547 2 sched_mm_cid_before_execve
1.098 0.549 0.686 2 sched_mm_cid_after_execve
perf ftrace profile test [Success]
---- end(0) ----
86: perf ftrace tests : Ok
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Link: https://lore.kernel.org/r/20240808044954.1775333-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
90d78e7b8e
commit
ed5bb548cc
84
tools/perf/tests/shell/ftrace.sh
Executable file
84
tools/perf/tests/shell/ftrace.sh
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
#!/bin/sh
|
||||
# perf ftrace tests
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
set -e
|
||||
|
||||
# perf ftrace commands only works for root
|
||||
if [ "$(id -u)" != 0 ]; then
|
||||
echo "perf ftrace test [Skipped: no permission]"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
output=$(mktemp /tmp/__perf_test.ftrace.XXXXXX)
|
||||
|
||||
cleanup() {
|
||||
rm -f "${output}"
|
||||
|
||||
trap - EXIT TERM INT
|
||||
}
|
||||
|
||||
trap_cleanup() {
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
trap trap_cleanup EXIT TERM INT
|
||||
|
||||
# this will be set in test_ftrace_trace()
|
||||
target_function=
|
||||
|
||||
test_ftrace_list() {
|
||||
echo "perf ftrace list test"
|
||||
perf ftrace -F > "${output}"
|
||||
# this will be used in test_ftrace_trace()
|
||||
sleep_functions=$(grep 'sys_.*sleep$' "${output}")
|
||||
echo "syscalls for sleep:"
|
||||
echo "${sleep_functions}"
|
||||
echo "perf ftrace list test [Success]"
|
||||
}
|
||||
|
||||
test_ftrace_trace() {
|
||||
echo "perf ftrace trace test"
|
||||
perf ftrace trace --graph-opts depth=5 sleep 0.1 > "${output}"
|
||||
# it should have some function name contains 'sleep'
|
||||
grep "^#" "${output}"
|
||||
grep -F 'sleep()' "${output}"
|
||||
# find actual syscall function name
|
||||
for FN in ${sleep_functions}; do
|
||||
if grep -q "${FN}" "${output}"; then
|
||||
target_function="${FN}"
|
||||
echo "perf ftrace trace test [Success]"
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
echo "perf ftrace trace test [Failure: sleep syscall not found]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
test_ftrace_latency() {
|
||||
echo "perf ftrace latency test"
|
||||
echo "target function: ${target_function}"
|
||||
perf ftrace latency -T "${target_function}" sleep 0.1 > "${output}"
|
||||
grep "^#" "${output}"
|
||||
grep "###" "${output}"
|
||||
echo "perf ftrace latency test [Success]"
|
||||
}
|
||||
|
||||
test_ftrace_profile() {
|
||||
echo "perf ftrace profile test"
|
||||
perf ftrace profile sleep 0.1 > "${output}"
|
||||
grep ^# "${output}"
|
||||
grep sleep "${output}"
|
||||
grep schedule "${output}"
|
||||
grep execve "${output}"
|
||||
echo "perf ftrace profile test [Success]"
|
||||
}
|
||||
|
||||
test_ftrace_list
|
||||
test_ftrace_trace
|
||||
test_ftrace_latency
|
||||
test_ftrace_profile
|
||||
|
||||
cleanup
|
||||
exit 0
|
||||
Loading…
Reference in New Issue
Block a user