1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0+ 3 # 4 # Run bpftrace to obtain a histogram of the types of primitives used to 5 # initiate RCU grace periods. The count associated with rcu_gp_init() 6 # is the number of normal (non-expedited) grace periods. 7 # 8 # Usage: rcu-updaters.sh [ duration-in-seconds ] 9 # 10 # Note that not all kernel builds have all of these functions. In those 11 # that do not, this script will issue a diagnostic for each that is not 12 # found, but continue normally for the rest of the functions. 13 14 duration=${1} 15 if test -n "${duration}" 16 then 17 exitclause='interval:s:'"${duration}"' { exit(); }' 18 else 19 echo 'Hit control-C to end sample and print results.' 20 fi 21 bpftrace -e 'kprobe:kvfree_call_rcu, 22 kprobe:call_rcu, 23 kprobe:call_rcu_tasks, 24 kprobe:call_rcu_tasks_rude, 25 kprobe:call_rcu_tasks_trace, 26 kprobe:call_srcu, 27 kprobe:rcu_barrier, 28 kprobe:rcu_barrier_tasks, 29 kprobe:rcu_barrier_tasks_rude, 30 kprobe:rcu_barrier_tasks_trace, 31 kprobe:srcu_barrier, 32 kprobe:synchronize_rcu, 33 kprobe:synchronize_rcu_expedited, 34 kprobe:synchronize_rcu_tasks, 35 kprobe:synchronize_rcu_tasks_rude, 36 kprobe:synchronize_rcu_tasks_trace, 37 kprobe:synchronize_srcu, 38 kprobe:synchronize_srcu_expedited, 39 kprobe:get_state_synchronize_rcu, 40 kprobe:get_state_synchronize_rcu_full, 41 kprobe:start_poll_synchronize_rcu, 42 kprobe:start_poll_synchronize_rcu_expedited, 43 kprobe:start_poll_synchronize_rcu_full, 44 kprobe:start_poll_synchronize_rcu_expedited_full, 45 kprobe:poll_state_synchronize_rcu, 46 kprobe:poll_state_synchronize_rcu_full, 47 kprobe:cond_synchronize_rcu, 48 kprobe:cond_synchronize_rcu_full, 49 kprobe:start_poll_synchronize_srcu, 50 kprobe:poll_state_synchronize_srcu, 51 kprobe:rcu_gp_init 52 { @counts[func] = count(); } '"${exitclause}"
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.