xref: /aosp_15_r20/external/bcc/tools/drsnoop_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of drsnoop, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerdrsnoop traces the direct reclaim system-wide, and prints various details.
5*387f9dfdSAndroid Build Coastguard WorkerExample output:
6*387f9dfdSAndroid Build Coastguard Worker
7*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop
8*387f9dfdSAndroid Build Coastguard WorkerCOMM           PID     LAT(ms) PAGES
9*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.19   143
10*387f9dfdSAndroid Build Coastguard Workersummond        17669      0.55   313
11*387f9dfdSAndroid Build Coastguard Workersummond        17669      0.15   145
12*387f9dfdSAndroid Build Coastguard Workersummond        17669      0.27   237
13*387f9dfdSAndroid Build Coastguard Workersummond        17669      0.48   111
14*387f9dfdSAndroid Build Coastguard Workersummond        17669      0.16    75
15*387f9dfdSAndroid Build Coastguard Workerhead           17821      0.29   339
16*387f9dfdSAndroid Build Coastguard Workerhead           17825      0.17   109
17*387f9dfdSAndroid Build Coastguard Workersummond        17669      0.14    73
18*387f9dfdSAndroid Build Coastguard Workersummond        17496    104.84    40
19*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.32   167
20*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.14   106
21*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.16    67
22*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.29   267
23*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.27    69
24*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.32    46
25*387f9dfdSAndroid Build Coastguard Workerbase64         17816      0.16    85
26*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.43   283
27*387f9dfdSAndroid Build Coastguard Workersummond        17678      0.14   182
28*387f9dfdSAndroid Build Coastguard Workerhead           17736      0.57   135
29*387f9dfdSAndroid Build Coastguard Worker^C
30*387f9dfdSAndroid Build Coastguard Worker
31*387f9dfdSAndroid Build Coastguard WorkerWhile tracing, the processes alloc pages,due to insufficient memory available
32*387f9dfdSAndroid Build Coastguard Workerin the system, direct reclaim events happened, which will increase the waiting
33*387f9dfdSAndroid Build Coastguard Workerdelay of the processes.
34*387f9dfdSAndroid Build Coastguard Worker
35*387f9dfdSAndroid Build Coastguard Workerdrsnoop can be useful for discovering when allocstall(/proc/vmstat) continues to increase,
36*387f9dfdSAndroid Build Coastguard Workerwhether it is caused by some critical processes or not.
37*387f9dfdSAndroid Build Coastguard Worker
38*387f9dfdSAndroid Build Coastguard WorkerThe -p option can be used to filter on a PID, which is filtered in-kernel. Here
39*387f9dfdSAndroid Build Coastguard WorkerI've used it with -T to print timestamps:
40*387f9dfdSAndroid Build Coastguard Worker
41*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop -Tp 17491
42*387f9dfdSAndroid Build Coastguard WorkerTIME(s)       COMM           PID     LAT(ms) PAGES
43*387f9dfdSAndroid Build Coastguard Worker107.364115000 summond        17491      0.24    50
44*387f9dfdSAndroid Build Coastguard Worker107.364550000 summond        17491      0.26    38
45*387f9dfdSAndroid Build Coastguard Worker107.365266000 summond        17491      0.36    72
46*387f9dfdSAndroid Build Coastguard Worker107.365753000 summond        17491      0.22    49
47*387f9dfdSAndroid Build Coastguard Worker^C
48*387f9dfdSAndroid Build Coastguard Worker
49*387f9dfdSAndroid Build Coastguard WorkerThis shows the summond process allocs pages, and direct reclaim events happening,
50*387f9dfdSAndroid Build Coastguard Workerand the delays are not affected much.
51*387f9dfdSAndroid Build Coastguard Worker
52*387f9dfdSAndroid Build Coastguard WorkerThe -U option include UID on output:
53*387f9dfdSAndroid Build Coastguard Worker
54*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop -U
55*387f9dfdSAndroid Build Coastguard WorkerUID   COMM           PID     LAT(ms) PAGES
56*387f9dfdSAndroid Build Coastguard Worker1000  summond        17678      0.32    46
57*387f9dfdSAndroid Build Coastguard Worker0     base64         17816      0.16    85
58*387f9dfdSAndroid Build Coastguard Worker1000  summond        17678      0.43   283
59*387f9dfdSAndroid Build Coastguard Worker1000  summond        17678      0.14   182
60*387f9dfdSAndroid Build Coastguard Worker0     head           17821      0.29   339
61*387f9dfdSAndroid Build Coastguard Worker0     head           17825      0.17   109
62*387f9dfdSAndroid Build Coastguard Worker^C
63*387f9dfdSAndroid Build Coastguard Worker
64*387f9dfdSAndroid Build Coastguard WorkerThe -u option filtering UID:
65*387f9dfdSAndroid Build Coastguard Worker
66*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop -Uu 1000
67*387f9dfdSAndroid Build Coastguard WorkerUID   COMM           PID      LAT(ms) PAGES
68*387f9dfdSAndroid Build Coastguard Worker1000  summond        17678       0.19   143
69*387f9dfdSAndroid Build Coastguard Worker1000  summond        17669       0.55   313
70*387f9dfdSAndroid Build Coastguard Worker1000  summond        17669       0.15   145
71*387f9dfdSAndroid Build Coastguard Worker1000  summond        17669       0.27   237
72*387f9dfdSAndroid Build Coastguard Worker1000  summond        17669       0.48   111
73*387f9dfdSAndroid Build Coastguard Worker1000  summond        17669       0.16    75
74*387f9dfdSAndroid Build Coastguard Worker1000  summond        17669       0.14    73
75*387f9dfdSAndroid Build Coastguard Worker1000  summond        17678       0.32   167
76*387f9dfdSAndroid Build Coastguard Worker^C
77*387f9dfdSAndroid Build Coastguard Worker
78*387f9dfdSAndroid Build Coastguard WorkerA maximum tracing duration can be set with the -d option. For example, to trace
79*387f9dfdSAndroid Build Coastguard Workerfor 2 seconds:
80*387f9dfdSAndroid Build Coastguard Worker
81*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop -d 2
82*387f9dfdSAndroid Build Coastguard WorkerCOMM           PID     LAT(ms) PAGES
83*387f9dfdSAndroid Build Coastguard Workerhead           21715      0.15   195
84*387f9dfdSAndroid Build Coastguard Worker
85*387f9dfdSAndroid Build Coastguard WorkerThe -n option can be used to filter on process name using partial matches:
86*387f9dfdSAndroid Build Coastguard Worker
87*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop -n mond
88*387f9dfdSAndroid Build Coastguard WorkerCOMM           PID     LAT(ms) PAGES
89*387f9dfdSAndroid Build Coastguard Workersummond       10271       0.03    51
90*387f9dfdSAndroid Build Coastguard Workersummond       10271       0.03    51
91*387f9dfdSAndroid Build Coastguard Workersummond       10259       0.05    51
92*387f9dfdSAndroid Build Coastguard Workersummond       10269     319.41    37
93*387f9dfdSAndroid Build Coastguard Workersummond       10270     111.73    35
94*387f9dfdSAndroid Build Coastguard Workersummond       10270       0.11    78
95*387f9dfdSAndroid Build Coastguard Workersummond       10270       0.12    71
96*387f9dfdSAndroid Build Coastguard Workersummond       10270       0.03    35
97*387f9dfdSAndroid Build Coastguard Workersummond       10277     111.62    41
98*387f9dfdSAndroid Build Coastguard Workersummond       10277       0.08    45
99*387f9dfdSAndroid Build Coastguard Workersummond       10277       0.06    32
100*387f9dfdSAndroid Build Coastguard Worker^C
101*387f9dfdSAndroid Build Coastguard Worker
102*387f9dfdSAndroid Build Coastguard WorkerThis caught the 'summond' command because it partially matches 'mond' that's passed
103*387f9dfdSAndroid Build Coastguard Workerto the '-n' option.
104*387f9dfdSAndroid Build Coastguard Worker
105*387f9dfdSAndroid Build Coastguard Worker
106*387f9dfdSAndroid Build Coastguard WorkerThe -v option can be used to show system memory state (now only free mem) at
107*387f9dfdSAndroid Build Coastguard Workerthe beginning of direct reclaiming:
108*387f9dfdSAndroid Build Coastguard Worker
109*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop.py -v
110*387f9dfdSAndroid Build Coastguard WorkerCOMM           PID     LAT(ms) PAGES  FREE(KB)
111*387f9dfdSAndroid Build Coastguard Workerbase64         34924      0.23   151     86260
112*387f9dfdSAndroid Build Coastguard Workerbase64         34962      0.26   149     86260
113*387f9dfdSAndroid Build Coastguard Workerhead           34931      0.24   150     86260
114*387f9dfdSAndroid Build Coastguard Workerbase64         34902      0.19   148     86260
115*387f9dfdSAndroid Build Coastguard Workerhead           34963      0.19   151     86228
116*387f9dfdSAndroid Build Coastguard Workerbase64         34959      0.17   151     86228
117*387f9dfdSAndroid Build Coastguard Workerhead           34965      0.29   190     86228
118*387f9dfdSAndroid Build Coastguard Workerbase64         34957      0.24   152     86228
119*387f9dfdSAndroid Build Coastguard Workersummond        34870      0.15   151     86080
120*387f9dfdSAndroid Build Coastguard Workersummond        34870      0.12   115     86184
121*387f9dfdSAndroid Build Coastguard Worker
122*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
123*387f9dfdSAndroid Build Coastguard Worker
124*387f9dfdSAndroid Build Coastguard Worker# ./drsnoop -h
125*387f9dfdSAndroid Build Coastguard Workerusage: drsnoop.py [-h] [-T] [-U] [-p PID] [-t TID] [-u UID] [-d DURATION]
126*387f9dfdSAndroid Build Coastguard Worker                  [-n NAME]
127*387f9dfdSAndroid Build Coastguard Worker
128*387f9dfdSAndroid Build Coastguard WorkerTrace direct reclaim
129*387f9dfdSAndroid Build Coastguard Worker
130*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
131*387f9dfdSAndroid Build Coastguard Worker  -h, --help            show this help message and exit
132*387f9dfdSAndroid Build Coastguard Worker  -T, --timestamp       include timestamp on output
133*387f9dfdSAndroid Build Coastguard Worker  -U, --print-uid       print UID column
134*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID     trace this PID only
135*387f9dfdSAndroid Build Coastguard Worker  -t TID, --tid TID     trace this TID only
136*387f9dfdSAndroid Build Coastguard Worker  -u UID, --uid UID     trace this UID only
137*387f9dfdSAndroid Build Coastguard Worker  -d DURATION, --duration DURATION
138*387f9dfdSAndroid Build Coastguard Worker                        total duration of trace in seconds
139*387f9dfdSAndroid Build Coastguard Worker  -n NAME, --name NAME  only print process names containing this name
140*387f9dfdSAndroid Build Coastguard Worker
141*387f9dfdSAndroid Build Coastguard Workerexamples:
142*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop           # trace all direct reclaim
143*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -T        # include timestamps
144*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -U        # include UID
145*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -p 181    # only trace PID 181
146*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -t 123    # only trace TID 123
147*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -u 1000   # only trace UID 1000
148*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -d 10     # trace for 10 seconds only
149*387f9dfdSAndroid Build Coastguard Worker    ./drsnoop -n main   # only print process names containing "main"
150