[PATCH v2 0/6] tracing/boot: Add new options for tracing specific period

From: Masami Hiramatsu
Date: Tue Sep 01 2020 - 03:56:38 EST


Hi,

Here is the 2nd version of the series to improve the boot-time tracing to
support kretprobe and tracing_on option. Previous version is here:

https://lkml.kernel.org/r/159887792384.1330989.5993224243767476896.stgit@devnote2

This version fixes a build error ([1/6]) and fix a space indent issue
([5/6]).

The combination of tracing_on and kretprobe allows us to trace events
while a specific function call period. For example, the below bootconfig
will make a function callgraph in the pci_proc_init() function at boot
time.

ftrace {
tracing_on = 0 # off at start
tracer = function_graph
event.kprobes {
start_event {
probes = "pci_proc_init"
actions = "traceon"
}
end_event {
probes = "pci_proc_init%return"
actions = "traceoff"
}
}
}

Here is the example output;

# tracer: function_graph
#
# CPU DURATION FUNCTION CALLS
# | | | | | | |
0) | pci_proc_init() {
0) | proc_mkdir() {
0) | proc_mkdir_data() {
0) | __proc_create() {
0) | _raw_read_lock() {
0) 0.179 us | preempt_count_add();
0) 0.203 us | do_raw_read_lock();
0) 1.210 us | }
0) | __xlate_proc_name() {
0) 0.449 us | pde_subdir_find();
0) 0.913 us | }
0) | _raw_read_unlock() {
0) 0.169 us | do_raw_read_unlock();
0) 0.175 us | preempt_count_sub();
0) 0.841 us | }
0) | kmem_cache_alloc() {
0) | fs_reclaim_acquire() {
0) 0.154 us | __need_fs_reclaim();
0) 0.240 us | fs_reclaim_acquire.part.0();
0) 0.889 us | }
0) | fs_reclaim_release() {
0) 0.174 us | __need_fs_reclaim();
0) 0.516 us | }
0) 0.157 us | should_failslab();
0) | rcu_read_lock_sched_held() {
0) | rcu_read_lock_held_common() {
0) 0.156 us | rcu_is_watching();
0) 0.158 us | rcu_lockdep_current_cpu_online();
0) 0.735 us | }
0) 1.054 us | }
0) 3.407 us | }
0) 0.168 us | __raw_spin_lock_init();
0) 7.575 us | }
0) | proc_register() {
0) | _raw_spin_lock_irqsave() {
0) 0.187 us | preempt_count_add();
...


Thank you,

---

Masami Hiramatsu (6):
kprobes: tracing/kprobes: Fix to kill kprobes on initmem after boot
tracing/boot: Add per-instance tracing_on option support
Documentation: tracing: Add tracing_on option to boot-time tracer
tracing/kprobes: Support perf-style return probe
Documentation: tracing: Add %return suffix description
Documentation: tracing: boot: Add an example of tracing function-calls


Documentation/trace/boottime-trace.rst | 24 ++++++++++++++++++++++++
Documentation/trace/kprobetrace.rst | 2 ++
include/linux/kprobes.h | 5 +++++
init/main.c | 2 ++
kernel/kprobes.c | 22 ++++++++++++++++++++++
kernel/trace/trace_boot.c | 10 ++++++++++
kernel/trace/trace_kprobe.c | 21 ++++++++++++++++++++-
7 files changed, 85 insertions(+), 1 deletion(-)

--
Masami Hiramatsu (Linaro) <mhiramat@xxxxxxxxxx>