trace/pid_list: optimize pid_list->lock contention
When the system has many cores and task switching is frequent,
setting set_ftrace_pid can cause frequent pid_list->lock contention
and high system sys usage.
For example, in a 288-core VM environment, we observed 267 CPUs
experiencing contention on pid_list->lock, with stack traces showing:
#4 [
ffffa6226fb4bc70] native_queued_spin_lock_slowpath at
ffffffff99cd4b7e
#5 [
ffffa6226fb4bc90] _raw_spin_lock_irqsave at
ffffffff99cd3e36
#6 [
ffffa6226fb4bca0] trace_pid_list_is_set at
ffffffff99267554
#7 [
ffffa6226fb4bcc0] trace_ignore_this_task at
ffffffff9925c288
#8 [
ffffa6226fb4bcd8] ftrace_filter_pid_sched_switch_probe at
ffffffff99246efe
#9 [
ffffa6226fb4bcf0] __schedule at
ffffffff99ccd161
Replaces the existing spinlock with a seqlock to allow concurrent readers,
while maintaining write exclusivity.
Link: https://patch.msgid.link/20251113000252.1058144-1-leonylgao@gmail.com
Reviewed-by: Huang Cun <cunhuang@tencent.com>
Signed-off-by: Yongliang Gao <leonylgao@tencent.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>