2026-03-12 20:23:15
This commit is contained in:
32
tpt/tools/unix/runqlat.sh
Normal file
32
tpt/tools/unix/runqlat.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Tiny Linux /proc/<pid>/schedstat demo script by Tanel Poder
|
||||
# https://tanelpoder.com
|
||||
#
|
||||
# You may want to run this with high priority:
|
||||
# sudo nice -n -10 ./runqlat.sh PID
|
||||
#
|
||||
# currently this script assumes that it will speep exactly for $SLEEP
|
||||
# seconds, but it can itself be affected by CPU overload and you may
|
||||
# see values that don't add up to 1000 ms per sec
|
||||
# (or negative percentages in the derived BLKD% column)
|
||||
|
||||
PID=$1
|
||||
SLEEP=1
|
||||
|
||||
echo Sampling /proc/$PID/schedstat every $SLEEP seconds...
|
||||
|
||||
printf "%6s %6s %6s\n" "CPU%" "RUNQ%" "SLP%"
|
||||
while true ; do
|
||||
read -r CPU_NS_1 LAT_NS_1 SLICES_ON_THIS_CPU_1 < /proc/$PID/schedstat
|
||||
sleep $SLEEP
|
||||
read -r CPU_NS_2 LAT_NS_2 SLICES_ON_THIS_CPU_2 < /proc/$PID/schedstat
|
||||
|
||||
ON_CPU=$((($CPU_NS_2-$CPU_NS_1)/10000000))
|
||||
ON_RUNQ=$((($LAT_NS_2-$LAT_NS_1)/10000000))
|
||||
OTHER=$((100-($ON_CPU+ON_RUNQ)))
|
||||
|
||||
printf "%6d %6d %6d" $ON_CPU $ON_RUNQ $OTHER
|
||||
echo
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user