Last active
February 26, 2018 23:46
-
-
Save mhiramat/326610e61aa51c484e7a206ccbb0e1de to your computer and use it in GitHub Desktop.
Benchmarking kprobe-event
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/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" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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