brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 8a5df3f Raw
51 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.0+3#4# Run bpftrace to obtain a histogram of the types of primitives used to5# 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 those11# that do not, this script will issue a diagnostic for each that is not12# found, but continue normally for the rest of the functions.13 14duration=${1}15if test -n "${duration}"16then17	exitclause='interval:s:'"${duration}"' { exit(); }'18else19	echo 'Hit control-C to end sample and print results.'20fi21bpftrace -e 'kprobe:kvfree_call_rcu,22	     kprobe:call_rcu,23	     kprobe:call_rcu_tasks,24	     kprobe:call_rcu_tasks_trace,25	     kprobe:call_srcu,26	     kprobe:rcu_barrier,27	     kprobe:rcu_barrier_tasks,28	     kprobe:rcu_barrier_tasks_trace,29	     kprobe:srcu_barrier,30	     kprobe:synchronize_rcu,31	     kprobe:synchronize_rcu_expedited,32	     kprobe:synchronize_rcu_tasks,33	     kprobe:synchronize_rcu_tasks_rude,34	     kprobe:synchronize_rcu_tasks_trace,35	     kprobe:synchronize_srcu,36	     kprobe:synchronize_srcu_expedited,37	     kprobe:get_state_synchronize_rcu,38	     kprobe:get_state_synchronize_rcu_full,39	     kprobe:start_poll_synchronize_rcu,40	     kprobe:start_poll_synchronize_rcu_expedited,41	     kprobe:start_poll_synchronize_rcu_full,42	     kprobe:start_poll_synchronize_rcu_expedited_full,43	     kprobe:poll_state_synchronize_rcu,44	     kprobe:poll_state_synchronize_rcu_full,45	     kprobe:cond_synchronize_rcu,46	     kprobe:cond_synchronize_rcu_full,47	     kprobe:start_poll_synchronize_srcu,48	     kprobe:poll_state_synchronize_srcu,49	     kprobe:rcu_gp_init50	     	{ @counts[func] = count(); } '"${exitclause}"51