Last active
July 14, 2019 16:17
-
-
Save fbs/b810395270e3d0d3c7c2eae96656f17d to your computer and use it in GitHub Desktop.
bpftrace issue 817
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Let bpftrace count kills | |
# do a lot of kills for x seconds | |
# Setup extra kill tracer | |
# Setup bpftrace map clear tracer | |
# Loop: | |
# Send single kill | |
# dump map content | |
tmpdir=$(mktemp -d) | |
logfile="${tmpdir}/log" | |
mkfifo $logfile | |
echo "tempdir: ${tmpdir}" | |
sudo bpftrace -o "$logfile" -e " | |
t:syscalls:sys_enter_kill { | |
@kills[probe] = count(); | |
} | |
interval:s:1 { | |
time(); print(@kills); clear(@kills); | |
}" & TRACE_PID=$! | |
cat $logfile > /dev/null & CAT_PID=$! | |
# give bpftrace time to setup maps | |
sleep 3 | |
MAPS=$(sudo bpftool map | awk '$2 ~ /percpu_hash/ { print $1 }' | tr -d ':') | |
starttime=$(date +%s) | |
echo "Killing for a while" | |
while [ $(date +%s) -le $((starttime + 20)) ]; do | |
kill 3 &>/dev/null & | |
done | |
kill $CAT_PID | |
cat $logfile & CAT_PID=$! | |
sudo bpftrace -e 'uretprobe:./bpftrace/src/bpftrace:*clear_mapE* { printf("Clear returned at: "); time(); }' & CLEAR_PID=$! | |
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_kill { @ = count(); } i:s:10 { printf("Kill count: "); print(@) }' & KILL_PID=$! | |
for i in {1..60}; do | |
date | |
if [[ -n $1 && $1 == "kill" ]]; then | |
echo "Sending kill" | |
kill 3 &>/dev/null #; kill 3 &>/dev/null; kill 3 &>/dev/null; kill 3 &>/dev/null | |
fi | |
echo "Map contents" | |
echo $MAPS | xargs -n 1 sudo bpftool map dump id | |
sleep 1; | |
done | |
kill $CAT_PID | |
sudo pkill -P $$ | |
sudo pkill bpftrace |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment