xref: /aosp_15_r20/external/bcc/tools/xfsdist_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of xfsdist, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerxfsdist traces XFS 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# ./xfsdist
8*387f9dfdSAndroid Build Coastguard WorkerTracing XFS 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          : 0        |                                        |
14*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 362      |                                        |
15*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 807      |*                                       |
16*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 20686    |****************************************|
17*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 512      |                                        |
18*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 4        |                                        |
19*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 2744     |*****                                   |
20*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 7127     |*************                           |
21*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 2483     |****                                    |
22*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 1281     |**                                      |
23*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 39       |                                        |
24*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 5        |                                        |
25*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 1        |                                        |
26*387f9dfdSAndroid Build Coastguard Worker
27*387f9dfdSAndroid Build Coastguard Workeroperation = 'open'
28*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
29*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
30*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 3        |****************************************|
31*387f9dfdSAndroid Build Coastguard Worker
32*387f9dfdSAndroid Build Coastguard WorkerThis output shows a bi-modal distribution for read latency, with a faster
33*387f9dfdSAndroid Build Coastguard Workermode of 20,686 reads that took between 8 and 15 microseconds, and a slower
34*387f9dfdSAndroid Build Coastguard Workermode of over 10,000 reads that took between 64 and 1023 microseconds. It's
35*387f9dfdSAndroid Build Coastguard Workerlikely that the faster mode was a hit from the in-memory file system cache,
36*387f9dfdSAndroid Build Coastguard Workerand the slower mode is a read from a storage device (disk).
37*387f9dfdSAndroid Build Coastguard Worker
38*387f9dfdSAndroid Build Coastguard WorkerThis "latency" is measured from when the operation was issued from the VFS
39*387f9dfdSAndroid Build Coastguard Workerinterface to the file system, to when it completed. This spans everything:
40*387f9dfdSAndroid Build Coastguard Workerblock device I/O (disk I/O), file system CPU cycles, file system locks, run
41*387f9dfdSAndroid Build Coastguard Workerqueue latency, etc. This is a better measure of the latency suffered by
42*387f9dfdSAndroid Build Coastguard Workerapplications reading from the file system than measuring this down at the
43*387f9dfdSAndroid Build Coastguard Workerblock device interface.
44*387f9dfdSAndroid Build Coastguard Worker
45*387f9dfdSAndroid Build Coastguard WorkerNote that this only traces the common file system operations previously
46*387f9dfdSAndroid Build Coastguard Workerlisted: other file system operations (eg, inode operations including
47*387f9dfdSAndroid Build Coastguard Workergetattr()) are not traced.
48*387f9dfdSAndroid Build Coastguard Worker
49*387f9dfdSAndroid Build Coastguard Worker
50*387f9dfdSAndroid Build Coastguard WorkerAn optional interval and a count can be provided, as well as -m to show the
51*387f9dfdSAndroid Build Coastguard Workerdistributions in milliseconds. For example:
52*387f9dfdSAndroid Build Coastguard Worker
53*387f9dfdSAndroid Build Coastguard Worker# ./xfsdist -m 1 5
54*387f9dfdSAndroid Build Coastguard WorkerTracing XFS operation latency... Hit Ctrl-C to end.
55*387f9dfdSAndroid Build Coastguard Worker
56*387f9dfdSAndroid Build Coastguard Worker10:14:15:
57*387f9dfdSAndroid Build Coastguard Worker
58*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
59*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
60*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 1366     |****************************************|
61*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 86       |**                                      |
62*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 95       |**                                      |
63*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 132      |***                                     |
64*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 72       |**                                      |
65*387f9dfdSAndroid Build Coastguard Worker
66*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
67*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
68*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 685      |****************************************|
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard Worker10:14:16:
71*387f9dfdSAndroid Build Coastguard Worker
72*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
73*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
74*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 984      |****************************************|
75*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 66       |**                                      |
76*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 67       |**                                      |
77*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 104      |****                                    |
78*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 70       |**                                      |
79*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 12       |                                        |
80*387f9dfdSAndroid Build Coastguard Worker
81*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
82*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
83*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 536      |****************************************|
84*387f9dfdSAndroid Build Coastguard Worker
85*387f9dfdSAndroid Build Coastguard Worker10:14:17:
86*387f9dfdSAndroid Build Coastguard Worker
87*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
88*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
89*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 1262     |****************************************|
90*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 75       |**                                      |
91*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 80       |**                                      |
92*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 119      |***                                     |
93*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 75       |**                                      |
94*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 3        |                                        |
95*387f9dfdSAndroid Build Coastguard Worker
96*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
97*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
98*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 639      |****************************************|
99*387f9dfdSAndroid Build Coastguard Worker
100*387f9dfdSAndroid Build Coastguard Worker10:14:18:
101*387f9dfdSAndroid Build Coastguard Worker
102*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
103*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
104*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 1070     |****************************************|
105*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 58       |**                                      |
106*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 74       |**                                      |
107*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 140      |*****                                   |
108*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 60       |**                                      |
109*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 5        |                                        |
110*387f9dfdSAndroid Build Coastguard Worker
111*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
112*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
113*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 556      |****************************************|
114*387f9dfdSAndroid Build Coastguard Worker
115*387f9dfdSAndroid Build Coastguard Worker10:14:19:
116*387f9dfdSAndroid Build Coastguard Worker
117*387f9dfdSAndroid Build Coastguard Workeroperation = 'read'
118*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
119*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 1176     |****************************************|
120*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 53       |*                                       |
121*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 94       |***                                     |
122*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 112      |***                                     |
123*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 77       |**                                      |
124*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 3        |                                        |
125*387f9dfdSAndroid Build Coastguard Worker
126*387f9dfdSAndroid Build Coastguard Workeroperation = 'write'
127*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
128*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 613      |****************************************|
129*387f9dfdSAndroid Build Coastguard Worker
130*387f9dfdSAndroid Build Coastguard WorkerThis shows a mixed read/write workload, where the slower read mode was around
131*387f9dfdSAndroid Build Coastguard Worker10 ms.
132*387f9dfdSAndroid Build Coastguard Worker
133*387f9dfdSAndroid Build Coastguard Worker
134*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
135*387f9dfdSAndroid Build Coastguard Worker
136*387f9dfdSAndroid Build Coastguard Worker# ./xfsdist -h
137*387f9dfdSAndroid Build Coastguard Workerusage: xfsdist [-h] [-T] [-m] [-p PID] [interval] [count]
138*387f9dfdSAndroid Build Coastguard Worker
139*387f9dfdSAndroid Build Coastguard WorkerSummarize XFS operation latency
140*387f9dfdSAndroid Build Coastguard Worker
141*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
142*387f9dfdSAndroid Build Coastguard Worker  interval            output interval, in seconds
143*387f9dfdSAndroid Build Coastguard Worker  count               number of outputs
144*387f9dfdSAndroid Build Coastguard Worker
145*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
146*387f9dfdSAndroid Build Coastguard Worker  -h, --help          show this help message and exit
147*387f9dfdSAndroid Build Coastguard Worker  -T, --notimestamp   don't include timestamp on interval output
148*387f9dfdSAndroid Build Coastguard Worker  -m, --milliseconds  output in milliseconds
149*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID   trace this PID only
150*387f9dfdSAndroid Build Coastguard Worker
151*387f9dfdSAndroid Build Coastguard Workerexamples:
152*387f9dfdSAndroid Build Coastguard Worker    ./xfsdist            # show operation latency as a histogram
153*387f9dfdSAndroid Build Coastguard Worker    ./xfsdist -p 181     # trace PID 181 only
154*387f9dfdSAndroid Build Coastguard Worker    ./xfsdist 1 10       # print 1 second summaries, 10 times
155*387f9dfdSAndroid Build Coastguard Worker    ./xfsdist -m 5       # 5s summaries, milliseconds
156