xref: /aosp_15_r20/external/bcc/tools/xfsslower_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of xfsslower, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerxfsslower shows XFS reads, writes, opens, and fsyncs, slower than a threshold.
5*387f9dfdSAndroid Build Coastguard WorkerFor example:
6*387f9dfdSAndroid Build Coastguard Worker
7*387f9dfdSAndroid Build Coastguard Worker# ./xfsslower
8*387f9dfdSAndroid Build Coastguard WorkerTracing XFS operations slower than 10 ms
9*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
10*387f9dfdSAndroid Build Coastguard Worker06:23:06 randread.pl    32497  R 8192    24938024   17.93 data1
11*387f9dfdSAndroid Build Coastguard Worker06:23:06 randread.pl    32521  R 8192    13431528   18.27 data1
12*387f9dfdSAndroid Build Coastguard Worker06:23:08 randread.pl    32497  R 8192    5070904    16.37 data1
13*387f9dfdSAndroid Build Coastguard Worker06:23:08 randread.pl    32521  R 8192    12693016   16.06 data1
14*387f9dfdSAndroid Build Coastguard Worker06:23:18 randread.pl    32521  R 8192    27049136   21.68 data1
15*387f9dfdSAndroid Build Coastguard Worker06:23:18 randread.pl    32497  R 8192    257864     21.74 data1
16*387f9dfdSAndroid Build Coastguard Worker06:23:20 randread.pl    32497  R 8192    17797208   13.37 data1
17*387f9dfdSAndroid Build Coastguard Worker06:23:20 randread.pl    32497  R 8192    6088224    19.74 data1
18*387f9dfdSAndroid Build Coastguard Worker
19*387f9dfdSAndroid Build Coastguard WorkerThis shows several reads from a "randread.pl" program, each 8 Kbytes in size,
20*387f9dfdSAndroid Build Coastguard Workerand from a "data1" file. These all had over 10 ms latency.
21*387f9dfdSAndroid Build Coastguard Worker
22*387f9dfdSAndroid Build Coastguard WorkerThis "latency" is measured from when the operation was issued from the VFS
23*387f9dfdSAndroid Build Coastguard Workerinterface to the file system, to when it completed. This spans everything:
24*387f9dfdSAndroid Build Coastguard Workerblock device I/O (disk I/O), file system CPU cycles, file system locks, run
25*387f9dfdSAndroid Build Coastguard Workerqueue latency, etc. This is a better measure of the latency suffered by
26*387f9dfdSAndroid Build Coastguard Workerapplications reading from the file system than measuring this down at the
27*387f9dfdSAndroid Build Coastguard Workerblock device interface.
28*387f9dfdSAndroid Build Coastguard Worker
29*387f9dfdSAndroid Build Coastguard WorkerNote that this only traces the common file system operations previously
30*387f9dfdSAndroid Build Coastguard Workerlisted: other file system operations (eg, inode operations including
31*387f9dfdSAndroid Build Coastguard Workergetattr()) are not traced.
32*387f9dfdSAndroid Build Coastguard Worker
33*387f9dfdSAndroid Build Coastguard Worker
34*387f9dfdSAndroid Build Coastguard WorkerThe threshold can be provided as an argument. Eg, I/O slower than 1 ms:
35*387f9dfdSAndroid Build Coastguard Worker
36*387f9dfdSAndroid Build Coastguard Worker# ./xfsslower 1
37*387f9dfdSAndroid Build Coastguard WorkerTracing XFS operations slower than 1 ms
38*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
39*387f9dfdSAndroid Build Coastguard Worker06:26:59 randread.pl    5394   R 8192    9045728     1.24 data1
40*387f9dfdSAndroid Build Coastguard Worker06:26:59 randread.pl    5394   R 8192    23532136    1.17 data1
41*387f9dfdSAndroid Build Coastguard Worker06:26:59 randread.pl    5442   R 8192    2192376     2.06 data1
42*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    3535176     1.27 data1
43*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    21361784    3.18 data1
44*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    2556336     3.23 data1
45*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    20020880    2.87 data1
46*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    20708888    3.32 data1
47*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    4654680     2.00 data1
48*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    5591744     1.98 data1
49*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    2431056     1.22 data1
50*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    384288      2.95 data1
51*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    29277672    3.07 data1
52*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    29508216    3.23 data1
53*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    17200008    2.86 data1
54*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    20693088    1.06 data1
55*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    28124192    1.38 data1
56*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5442   R 8192    23821184    1.28 data1
57*387f9dfdSAndroid Build Coastguard Worker06:27:00 randread.pl    5394   R 8192    1623200     1.47 data1
58*387f9dfdSAndroid Build Coastguard Worker[...]
59*387f9dfdSAndroid Build Coastguard Worker
60*387f9dfdSAndroid Build Coastguard WorkerThere's now much more output (this spans only 2 seconds, the previous output
61*387f9dfdSAndroid Build Coastguard Workerspanned 14 seconds), as the lower threshold is catching more I/O.
62*387f9dfdSAndroid Build Coastguard Worker
63*387f9dfdSAndroid Build Coastguard Worker
64*387f9dfdSAndroid Build Coastguard WorkerA threshold of 0 will trace all operations. Warning: the output will be
65*387f9dfdSAndroid Build Coastguard Workerverbose, as it will include all file system cache hits.
66*387f9dfdSAndroid Build Coastguard Worker
67*387f9dfdSAndroid Build Coastguard Worker# ./xfsslower 0
68*387f9dfdSAndroid Build Coastguard WorkerTracing XFS operations
69*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
70*387f9dfdSAndroid Build Coastguard Worker06:29:43 ls             9291   O 0       0           0.00 bench
71*387f9dfdSAndroid Build Coastguard Worker06:29:47 cat            9361   O 0       0           0.00 date.txt
72*387f9dfdSAndroid Build Coastguard Worker06:29:47 cat            9361   R 29      0           0.01 date.txt
73*387f9dfdSAndroid Build Coastguard Worker06:29:47 cat            9361   R 0       0           0.00 date.txt
74*387f9dfdSAndroid Build Coastguard Worker06:29:50 bash           20500  O 0       0           0.00 bench
75*387f9dfdSAndroid Build Coastguard Worker06:29:50 bash           20500  O 0       0           0.00 bench
76*387f9dfdSAndroid Build Coastguard Worker06:29:50 bash           20500  O 0       0           0.00 bench
77*387f9dfdSAndroid Build Coastguard Worker06:29:50 bash           9431   O 0       0           0.00 bench
78*387f9dfdSAndroid Build Coastguard Worker06:29:50 bash           9432   O 0       0           0.00 bench
79*387f9dfdSAndroid Build Coastguard Worker06:29:50 bash           9456   O 0       0           0.00 newdate.txt
80*387f9dfdSAndroid Build Coastguard Worker06:29:50 date           9456   W 29      0           0.01 newdate.txt
81*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   O 0       0           0.00 data1
82*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   0           0.06 data1
83*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   64          0.01 data1
84*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   128         0.02 data1
85*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   192         0.01 data1
86*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   256         0.01 data1
87*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   320         0.01 data1
88*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   384         0.01 data1
89*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   448         0.04 data1
90*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   512         0.01 data1
91*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   576         0.02 data1
92*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   640         0.01 data1
93*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   704         0.01 data1
94*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   768         0.01 data1
95*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   832         0.01 data1
96*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   896         0.01 data1
97*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   960         0.01 data1
98*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   1024        0.01 data1
99*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   1088        0.02 data1
100*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   1152        0.01 data1
101*387f9dfdSAndroid Build Coastguard Worker06:29:53 cksum          9503   R 65536   1216        0.01 data1
102*387f9dfdSAndroid Build Coastguard Worker[...]
103*387f9dfdSAndroid Build Coastguard Worker
104*387f9dfdSAndroid Build Coastguard WorkerThe output now includes open operations ("O"), and writes ("W"). A cksum(1)
105*387f9dfdSAndroid Build Coastguard Workercommand can be seen reading from a data1 file, from progressively increasing
106*387f9dfdSAndroid Build Coastguard Workeroffsets: a sequential workload.
107*387f9dfdSAndroid Build Coastguard Worker
108*387f9dfdSAndroid Build Coastguard Worker
109*387f9dfdSAndroid Build Coastguard WorkerA -j option will print just the fields (parsable output, csv):
110*387f9dfdSAndroid Build Coastguard Worker
111*387f9dfdSAndroid Build Coastguard Worker# ./xfsslower -j 1
112*387f9dfdSAndroid Build Coastguard WorkerENDTIME_us,TASK,PID,TYPE,BYTES,OFFSET_b,LATENCY_us,FILE
113*387f9dfdSAndroid Build Coastguard Worker125563830632,randread.pl,12155,R,8192,27824193536,1057,data1
114*387f9dfdSAndroid Build Coastguard Worker125565050578,randread.pl,12155,R,8192,16908525568,1969,data1
115*387f9dfdSAndroid Build Coastguard Worker125566331140,randread.pl,12202,R,8192,16310689792,1738,data1
116*387f9dfdSAndroid Build Coastguard Worker125566427955,randread.pl,12155,R,8192,11127439360,1058,data1
117*387f9dfdSAndroid Build Coastguard Worker125567223494,randread.pl,12202,R,8192,8422031360,1131,data1
118*387f9dfdSAndroid Build Coastguard Worker125567331145,randread.pl,12155,R,8192,9233088512,1230,data1
119*387f9dfdSAndroid Build Coastguard Worker125567331220,randread.pl,12202,R,8192,12716326912,1148,data1
120*387f9dfdSAndroid Build Coastguard Worker125567334983,randread.pl,12155,R,8192,24545206272,2182,data1
121*387f9dfdSAndroid Build Coastguard Worker[...]
122*387f9dfdSAndroid Build Coastguard Worker
123*387f9dfdSAndroid Build Coastguard WorkerThis may be useful for visualizing with another tool, for example, for
124*387f9dfdSAndroid Build Coastguard Workerproducing a scatter plot of ENDTIME vs LATENCY, to look for time-based
125*387f9dfdSAndroid Build Coastguard Workerpatterns.
126*387f9dfdSAndroid Build Coastguard Worker
127*387f9dfdSAndroid Build Coastguard Worker
128*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
129*387f9dfdSAndroid Build Coastguard Worker
130*387f9dfdSAndroid Build Coastguard Worker# ./xfsslower -h
131*387f9dfdSAndroid Build Coastguard Workerusage: xfsslower [-h] [-j] [-p PID] [min_ms]
132*387f9dfdSAndroid Build Coastguard Worker
133*387f9dfdSAndroid Build Coastguard WorkerTrace common XFS file operations slower than a threshold
134*387f9dfdSAndroid Build Coastguard Worker
135*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
136*387f9dfdSAndroid Build Coastguard Worker  min_ms             minimum I/O duration to trace, in ms (default 10)
137*387f9dfdSAndroid Build Coastguard Worker
138*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
139*387f9dfdSAndroid Build Coastguard Worker  -h, --help         show this help message and exit
140*387f9dfdSAndroid Build Coastguard Worker  -j, --csv          just print fields: comma-separated values
141*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID  trace this PID only
142*387f9dfdSAndroid Build Coastguard Worker
143*387f9dfdSAndroid Build Coastguard Workerexamples:
144*387f9dfdSAndroid Build Coastguard Worker    ./xfsslower             # trace operations slower than 10 ms (default)
145*387f9dfdSAndroid Build Coastguard Worker    ./xfsslower 1           # trace operations slower than 1 ms
146*387f9dfdSAndroid Build Coastguard Worker    ./xfsslower -j 1        # ... 1 ms, parsable output (csv)
147*387f9dfdSAndroid Build Coastguard Worker    ./xfsslower 0           # trace all operations (warning: verbose)
148*387f9dfdSAndroid Build Coastguard Worker    ./xfsslower -p 185      # trace PID 185 only
149