xref: /aosp_15_r20/external/bcc/tools/ext4dist_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of ext4dist, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerext4dist traces ext4 reads, writes, opens, and fsyncs, and summarizes their
5*387f9dfdSAndroid Build Coastguard Workerlatency as a power-of-2 histogram. For example:
6*387f9dfdSAndroid Build Coastguard Worker
7*387f9dfdSAndroid Build Coastguard Worker# ./ext4dist
8*387f9dfdSAndroid Build Coastguard WorkerTracing ext4 operation latency... Hit Ctrl-C to end.
9*387f9dfdSAndroid Build Coastguard Worker^C
10*387f9dfdSAndroid Build Coastguard Worker
11*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
12*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
13*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 1210     |****************************************|
14*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 126      |****                                    |
15*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 376      |************                            |
16*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 86       |**                                      |
17*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 9        |                                        |
18*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 47       |*                                       |
19*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 6        |                                        |
20*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 24       |                                        |
21*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 137      |****                                    |
22*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 66       |**                                      |
23*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 13       |                                        |
24*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 7        |                                        |
25*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 13       |                                        |
26*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 3        |                                        |
27*387f9dfdSAndroid Build Coastguard Worker
28*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
29*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
30*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
31*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
32*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
33*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 75       |****************************************|
34*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 5        |**                                      |
35*387f9dfdSAndroid Build Coastguard Worker
36*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
37*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
38*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 1278     |****************************************|
39*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 40       |*                                       |
40*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 4        |                                        |
41*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 1        |                                        |
42*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 1        |                                        |
43*387f9dfdSAndroid Build Coastguard Worker
44*387f9dfdSAndroid Build Coastguard WorkerThis output shows a bi-modal distribution for read latency, with a faster
45*387f9dfdSAndroid Build Coastguard Workermode of less than 7 microseconds, and a slower mode of between 256 and 1023
46*387f9dfdSAndroid Build Coastguard Workermicroseconds. The count column shows how many events fell into that latency
47*387f9dfdSAndroid Build Coastguard Workerrange. It's likely that the faster mode was a hit from the in-memory file
48*387f9dfdSAndroid Build Coastguard Workersystem cache, and the slower mode is a read from a storage device (disk).
49*387f9dfdSAndroid Build Coastguard Worker
50*387f9dfdSAndroid Build Coastguard WorkerThis "latency" is measured from when the operation was issued from the VFS
51*387f9dfdSAndroid Build Coastguard Workerinterface to the file system, to when it completed. This spans everything:
52*387f9dfdSAndroid Build Coastguard Workerblock device I/O (disk I/O), file system CPU cycles, file system locks, run
53*387f9dfdSAndroid Build Coastguard Workerqueue latency, etc. This is a better measure of the latency suffered by
54*387f9dfdSAndroid Build Coastguard Workerapplications reading from the file system than measuring this down at the
55*387f9dfdSAndroid Build Coastguard Workerblock device interface.
56*387f9dfdSAndroid Build Coastguard Worker
57*387f9dfdSAndroid Build Coastguard WorkerNote that this only traces the common file system operations previously
58*387f9dfdSAndroid Build Coastguard Workerlisted: other file system operations (eg, inode operations including
59*387f9dfdSAndroid Build Coastguard Workergetattr()) are not traced.
60*387f9dfdSAndroid Build Coastguard Worker
61*387f9dfdSAndroid Build Coastguard Worker
62*387f9dfdSAndroid Build Coastguard WorkerAn optional interval and a count can be provided, as well as -m to show the
63*387f9dfdSAndroid Build Coastguard Workerdistributions in milliseconds. For example:
64*387f9dfdSAndroid Build Coastguard Worker
65*387f9dfdSAndroid Build Coastguard Worker# ./ext4dist -m 1 5
66*387f9dfdSAndroid Build Coastguard WorkerTracing ext4 operation latency... Hit Ctrl-C to end.
67*387f9dfdSAndroid Build Coastguard Worker
68*387f9dfdSAndroid Build Coastguard Worker10:19:00:
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
71*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
72*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 576      |****************************************|
73*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 5        |                                        |
74*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 6        |                                        |
75*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 13       |                                        |
76*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 17       |*                                       |
77*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 5        |                                        |
78*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 1        |                                        |
79*387f9dfdSAndroid Build Coastguard Worker
80*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
81*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
82*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 20       |****************************************|
83*387f9dfdSAndroid Build Coastguard Worker
84*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
85*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
86*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 346      |****************************************|
87*387f9dfdSAndroid Build Coastguard Worker
88*387f9dfdSAndroid Build Coastguard Worker10:19:01:
89*387f9dfdSAndroid Build Coastguard Worker
90*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
91*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
92*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 584      |****************************************|
93*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 10       |                                        |
94*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 11       |                                        |
95*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 16       |*                                       |
96*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 6        |                                        |
97*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 4        |                                        |
98*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 2        |                                        |
99*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 1        |                                        |
100*387f9dfdSAndroid Build Coastguard Worker
101*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
102*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
103*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 20       |****************************************|
104*387f9dfdSAndroid Build Coastguard Worker
105*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
106*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
107*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 336      |****************************************|
108*387f9dfdSAndroid Build Coastguard Worker
109*387f9dfdSAndroid Build Coastguard Worker10:19:02:
110*387f9dfdSAndroid Build Coastguard Worker
111*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
112*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
113*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 678      |****************************************|
114*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 7        |                                        |
115*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 9        |                                        |
116*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 25       |*                                       |
117*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 10       |                                        |
118*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 3        |                                        |
119*387f9dfdSAndroid Build Coastguard Worker
120*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
121*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
122*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 19       |****************************************|
123*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 1        |**                                      |
124*387f9dfdSAndroid Build Coastguard Worker
125*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
126*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
127*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 390      |****************************************|
128*387f9dfdSAndroid Build Coastguard Worker
129*387f9dfdSAndroid Build Coastguard Worker10:19:03:
130*387f9dfdSAndroid Build Coastguard Worker
131*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
132*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
133*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 567      |****************************************|
134*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 7        |                                        |
135*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 9        |                                        |
136*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 20       |*                                       |
137*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 15       |*                                       |
138*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 5        |                                        |
139*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 2        |                                        |
140*387f9dfdSAndroid Build Coastguard Worker
141*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
142*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
143*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 20       |****************************************|
144*387f9dfdSAndroid Build Coastguard Worker
145*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
146*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
147*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 417      |****************************************|
148*387f9dfdSAndroid Build Coastguard Worker
149*387f9dfdSAndroid Build Coastguard Worker10:19:04:
150*387f9dfdSAndroid Build Coastguard Worker
151*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
152*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
153*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 762      |****************************************|
154*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 9        |                                        |
155*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 9        |                                        |
156*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 11       |                                        |
157*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 20       |*                                       |
158*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 4        |                                        |
159*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 1        |                                        |
160*387f9dfdSAndroid Build Coastguard Worker
161*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
162*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
163*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 20       |****************************************|
164*387f9dfdSAndroid Build Coastguard Worker
165*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
166*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
167*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 427      |****************************************|
168*387f9dfdSAndroid Build Coastguard Worker
169*387f9dfdSAndroid Build Coastguard WorkerThis shows a mixed read/write workload.
170*387f9dfdSAndroid Build Coastguard Worker
171*387f9dfdSAndroid Build Coastguard Worker
172*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
173*387f9dfdSAndroid Build Coastguard Worker
174*387f9dfdSAndroid Build Coastguard Worker# ./ext4dist -h
175*387f9dfdSAndroid Build Coastguard Workerusage: ext4dist [-h] [-T] [-m] [-p PID] [interval] [count]
176*387f9dfdSAndroid Build Coastguard Worker
177*387f9dfdSAndroid Build Coastguard WorkerSummarize ext4 operation latency
178*387f9dfdSAndroid Build Coastguard Worker
179*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
180*387f9dfdSAndroid Build Coastguard Worker  interval            output interval, in seconds
181*387f9dfdSAndroid Build Coastguard Worker  count               number of outputs
182*387f9dfdSAndroid Build Coastguard Worker
183*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
184*387f9dfdSAndroid Build Coastguard Worker  -h, --help          show this help message and exit
185*387f9dfdSAndroid Build Coastguard Worker  -T, --notimestamp   don't include timestamp on interval output
186*387f9dfdSAndroid Build Coastguard Worker  -m, --milliseconds  output in milliseconds
187*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID   trace this PID only
188*387f9dfdSAndroid Build Coastguard Worker
189*387f9dfdSAndroid Build Coastguard Workerexamples:
190*387f9dfdSAndroid Build Coastguard Worker    ./ext4dist            # show operation latency as a histogram
191*387f9dfdSAndroid Build Coastguard Worker    ./ext4dist -p 181     # trace PID 181 only
192*387f9dfdSAndroid Build Coastguard Worker    ./ext4dist 1 10       # print 1 second summaries, 10 times
193*387f9dfdSAndroid Build Coastguard Worker    ./ext4dist -m 5       # 5s summaries, milliseconds
194