Skip to content

Commit 6c14e9d

Browse files
committed
Add a bpftrace syscall timing demo
1 parent 7b210cd commit 6c14e9d

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

bpftrace/syscall_timing_probe.bt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
tracepoint:raw_syscalls:sys_enter /pid==$1/ {
2+
$t_start = elapsed;
3+
@starttimes[args.id] = elapsed;
4+
}
5+
tracepoint:raw_syscalls:sys_exit /pid==$1/ {
6+
$t_stop = elapsed;
7+
if (@starttimes[args.id] != 0) {
8+
@count[args.id] ++;
9+
@times_ns[args.id] += ($t_stop - @starttimes[args.id]);
10+
@starttimes[args.id] = 0;
11+
} else {
12+
@missed[args.id] ++
13+
}
14+
}
15+
END {
16+
clear(@starttimes);
17+
}
18+
/* requires bpftrace 0.22 */
19+
/*
20+
END {
21+
print("ID\tTIME_S\tPERCALL_US\tCOUNT\n");
22+
for ($kv : @count) {
23+
let $percalltime = @times_ns[$kv.0] / @count[$kv.0];
24+
printf("%d\t%f\t%f\t%d\n", $kv.0, @times_ns[$kv.0]/1000000, $percalltime, @counts[$kv.0]);
25+
}
26+
}
27+
*/

0 commit comments

Comments
 (0)