forked from bpftrace/bpftrace
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnaptime.bt
More file actions
47 lines (44 loc) · 1.51 KB
/
naptime.bt
File metadata and controls
47 lines (44 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env bpftrace
// naptime - Show voluntary sleep calls.
//
// See BPF Performance Tools, Chapter 13, for an explanation of this tool.
//
// Example of usage:
//
// # ./naptime.bt
// Attaching 2 probes...
// Tracing sleeps. Hit Ctrl-C to end.
// TIME PCOMM PPID COMM PID SECONDS
// 15:50:00 1 systemd 1319 mysqld 1.000
// 15:50:01 4388 bash 25250 sleep 5.000
// 15:50:01 1 systemd 1319 mysqld 1.000
// 15:50:01 1 systemd 1180 cron 60.000
// [...]
//
// The output shows mysqld performing a one second sleep every second (likely
// a daemon thread), a sleep(1) command sleeping for five seconds and called
// by bash, and cron threads sleeping for 60 seconds.
//
// Copyright (c) 2019 Brendan Gregg.
// This was originally created for the BPF Performance Tools book
// published by Addison Wesley. ISBN-13: 9780136554820
// When copying or porting, include this comment.
//
// 16-Feb-2019 Brendan Gregg Created this.
#ifndef BPFTRACE_HAVE_BTF
#include <linux/time.h>
#include <linux/sched.h>
#endif
BEGIN
{
printf("Tracing sleeps. Hit Ctrl-C to end.\n");
printf("%-8s %-6s %-16s %-6s %-16s %s\n",
"TIME", "PPID", "PCOMM", "PID", "COMM", "SECONDS");
}
tracepoint:syscalls:sys_enter_nanosleep
/args.rqtp.tv_sec + args.rqtp.tv_nsec/
{
time("%H:%M:%S ");
printf("%-6d %-16s %-6d %-16s %d.%03d\n",
ppid, pcomm, pid, comm, args.rqtp.tv_sec, ((uint64)args.rqtp.tv_nsec) / 1e6);
}