在 2024/3/7 17:26, Michal Hocko 写道:
The main reasons for adding static tracepoints are:
1. To subdivide the time spent in the shrinker->count_objects() and
shrinker->scan_objects() functions within the do_shrink_slab function. Using
BPF kprobe, we can only track the time spent in the do_shrink_slab function.
2. When tracing frequently called functions, static tracepoints (BPF
tp/tracepoint) have lower performance impact compared to dynamic tracepoints
(BPF kprobe).
You can track the time process has been preempted by other means, no? We
have context switching tracepoints in place. Have you considered that
option?
Let me think about it...
Thanks
Bixuan Cui