Skip to content

Instantly share code, notes, and snippets.

@mhiramat
Last active February 26, 2018 23:46
Show Gist options
  • Save mhiramat/326610e61aa51c484e7a206ccbb0e1de to your computer and use it in GitHub Desktop.
Save mhiramat/326610e61aa51c484e7a206ccbb0e1de to your computer and use it in GitHub Desktop.
Benchmarking kprobe-event
#!/bin/sh
#set -xe
mount -t debugfs debug /sys/kernel/debug
cd /sys/kernel/debug/tracing
runbench() {
sync
echo "runbench: $1"
echo > trace
echo "p trace_event_raw_event_benchmark_event $1" > kprobe_events
echo 1 > events/kprobes/enable
sleep 0.5 # wait for optimizing probe
echo 1 > events/benchmark/benchmark_event/enable
sleep 1 # wait for benchmark
echo 0 > events/benchmark/benchmark_event/enable
echo 0 > events/kprobes/enable
tail trace -n 1
}
sleep 2
echo "start"
echo "noprobe"
echo 1 > events/benchmark/benchmark_event/enable
sleep 1
echo 0 > events/benchmark/benchmark_event/enable
tail trace -n 1
runbench
runbench "%di"
runbench "%di %si"
runbench "\$stack"
runbench "+0(\$stack)" # top of stack (return address)
runbench "+0(+0(\$stack))" # reference of top of stack (instruction)
runbench "%di:x8" # different store size
runbench "%di:x16"
runbench "%di:x32"
runbench "%di:x64"
@mhiramat
Copy link
Author

With switch-case based probe-event
start
noprobe
<...>-748 [006] d... 3.933779: benchmark_event: last=250 first=2577 max=6515 min=132 avg=142 std=35 std^2=1284
runbench:
event_benchmark-753 [006] d... 5.890718: benchmark_event: last=282 first=2802 max=5388 min=273 avg=289 std=45 std^2=2085
runbench: %di
event_benchmark-759 [007] d... 8.694900: benchmark_event: last=305 first=3999 max=11624 min=299 avg=319 std=58 std^2=3445
runbench: %di %si
event_benchmark-764 [006] d... 11.450434: benchmark_event: last=331 first=7225 max=35008 min=323 avg=344 std=100 std^2=10082
runbench: $stack
event_benchmark-769 [006] d... 14.156788: benchmark_event: last=309 first=5100 max=15757 min=301 avg=321 std=65 std^2=4347
runbench: +0($stack)
event_benchmark-774 [007] d... 16.877648: benchmark_event: last=335 first=6787 max=10324 min=328 avg=351 std=68 std^2=4699
runbench: +0(+0($stack))
event_benchmark-779 [006] d... 19.606336: benchmark_event: last=373 first=8269 max=35968 min=366 avg=391 std=94 std^2=8839
runbench: %di:x8
event_benchmark-784 [007] d... 22.330140: benchmark_event: last=426 first=5842 max=9979 min=301 avg=318 std=65 std^2=4250
runbench: %di:x16
event_benchmark-789 [006] d... 25.087713: benchmark_event: last=308 first=6271 max=8857 min=301 avg=321 std=66 std^2=4441
runbench: %di:x32
event_benchmark-794 [007] d... 27.873092: benchmark_event: last=307 first=3857 max=10944 min=301 avg=342 std=78 std^2=6197
runbench: %di:x64
event_benchmark-799 [006] d... 30.652846: benchmark_event: last=304 first=5821 max=14732 min=299 avg=326 std=77 std^2=5994

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment