xref: /aosp_15_r20/external/bcc/tools/btrfsslower_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of btrfsslower, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerbtrfsslower shows btrfs reads, writes, opens, and fsyncs, slower than a
5*387f9dfdSAndroid Build Coastguard Workerthreshold. For example:
6*387f9dfdSAndroid Build Coastguard Worker
7*387f9dfdSAndroid Build Coastguard Worker# ./btrfsslower
8*387f9dfdSAndroid Build Coastguard WorkerTracing btrfs operations slower than 10 ms
9*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
10*387f9dfdSAndroid Build Coastguard Worker01:22:03 randread.pl    13602  R 8192    391384     10.40 data1
11*387f9dfdSAndroid Build Coastguard Worker01:22:03 randread.pl    13602  R 8192    92632      10.41 data1
12*387f9dfdSAndroid Build Coastguard Worker01:22:06 randread.pl    13602  R 8192    199800     17.33 data1
13*387f9dfdSAndroid Build Coastguard Worker01:22:06 randread.pl    13602  R 8192    415160     17.21 data1
14*387f9dfdSAndroid Build Coastguard Worker01:22:07 randread.pl    13602  R 8192    729984     11.93 data1
15*387f9dfdSAndroid Build Coastguard Worker01:22:09 randread.pl    13602  R 8192    342784     11.90 data1
16*387f9dfdSAndroid Build Coastguard Worker[...]
17*387f9dfdSAndroid Build Coastguard Worker
18*387f9dfdSAndroid Build Coastguard WorkerThis shows several reads from a "randread.pl" program, each 8 Kbytes in size,
19*387f9dfdSAndroid Build Coastguard Workerand from a "data1" file. These all had over 10 ms latency.
20*387f9dfdSAndroid Build Coastguard Worker
21*387f9dfdSAndroid Build Coastguard WorkerThis "latency" is measured from when the operation was issued from the VFS
22*387f9dfdSAndroid Build Coastguard Workerinterface to the file system, to when it completed. This spans everything:
23*387f9dfdSAndroid Build Coastguard Workerblock device I/O (disk I/O), file system CPU cycles, file system locks, run
24*387f9dfdSAndroid Build Coastguard Workerqueue latency, etc. This is a better measure of the latency suffered by
25*387f9dfdSAndroid Build Coastguard Workerapplications reading from the file system than measuring this down at the
26*387f9dfdSAndroid Build Coastguard Workerblock device interface.
27*387f9dfdSAndroid Build Coastguard Worker
28*387f9dfdSAndroid Build Coastguard WorkerNote that this only traces the common file system operations previously
29*387f9dfdSAndroid Build Coastguard Workerlisted: other file system operations (eg, inode operations including
30*387f9dfdSAndroid Build Coastguard Workergetattr()) are not traced.
31*387f9dfdSAndroid Build Coastguard Worker
32*387f9dfdSAndroid Build Coastguard Worker
33*387f9dfdSAndroid Build Coastguard WorkerThe threshold can be provided as an argument. Eg, I/O slower than 1 ms:
34*387f9dfdSAndroid Build Coastguard Worker
35*387f9dfdSAndroid Build Coastguard Worker# ./btrfsslower 1
36*387f9dfdSAndroid Build Coastguard WorkerTracing btrfs operations slower than 1 ms
37*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
38*387f9dfdSAndroid Build Coastguard Worker03:26:54 randread.pl    30578  R 8192    214864      1.87 data1
39*387f9dfdSAndroid Build Coastguard Worker03:26:54 randread.pl    30578  R 8192    267600      1.48 data1
40*387f9dfdSAndroid Build Coastguard Worker03:26:54 randread.pl    30578  R 8192    704200      1.30 data1
41*387f9dfdSAndroid Build Coastguard Worker03:26:54 randread.pl    30578  R 8192    492352      3.09 data1
42*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    319448      1.34 data1
43*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    676032      1.88 data1
44*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    646712      2.24 data1
45*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    124376      1.02 data1
46*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    223064      2.64 data1
47*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    521280      1.55 data1
48*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    272992      2.48 data1
49*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    450112      2.67 data1
50*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    361808      1.78 data1
51*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    41088       1.46 data1
52*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    756576      1.67 data1
53*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    711776      2.74 data1
54*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    129472      1.34 data1
55*387f9dfdSAndroid Build Coastguard Worker03:26:55 randread.pl    30578  R 8192    526928      1.82 data1
56*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    312768      1.44 data1
57*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    34720       1.14 data1
58*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    258376      1.13 data1
59*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    308456      1.44 data1
60*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    759656      1.27 data1
61*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    387424      3.24 data1
62*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    168864      3.38 data1
63*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    699296      1.38 data1
64*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    405688      2.37 data1
65*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    559064      1.18 data1
66*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    264808      1.13 data1
67*387f9dfdSAndroid Build Coastguard Worker03:26:56 randread.pl    30578  R 8192    369240      2.20 data1
68*387f9dfdSAndroid Build Coastguard Worker[...]
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard WorkerThere's now much more output (this spans less than 3 seconds, the previous output
71*387f9dfdSAndroid Build Coastguard Workerspanned 6 seconds), as the lower threshold is catching more I/O.
72*387f9dfdSAndroid Build Coastguard Worker
73*387f9dfdSAndroid Build Coastguard Worker
74*387f9dfdSAndroid Build Coastguard WorkerA threshold of 0 will trace all operations. Warning: the output will be
75*387f9dfdSAndroid Build Coastguard Workerverbose, as it will include all file system cache hits.
76*387f9dfdSAndroid Build Coastguard Worker
77*387f9dfdSAndroid Build Coastguard Worker# ./btrfsslower 0
78*387f9dfdSAndroid Build Coastguard WorkerTracing btrfs operations
79*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
80*387f9dfdSAndroid Build Coastguard Worker03:28:17 bash           32597  O 0       0           0.00 date.txt
81*387f9dfdSAndroid Build Coastguard Worker03:28:17 date           32597  W 29      0           0.02 date.txt
82*387f9dfdSAndroid Build Coastguard Worker03:28:23 cksum          32743  O 0       0           0.00 date.txt
83*387f9dfdSAndroid Build Coastguard Worker03:28:23 cksum          32743  R 29      0           0.01 date.txt
84*387f9dfdSAndroid Build Coastguard Worker03:28:23 cksum          32743  R 0       0           0.00 date.txt
85*387f9dfdSAndroid Build Coastguard Worker
86*387f9dfdSAndroid Build Coastguard WorkerWhile tracing, the following commands were run in another window:
87*387f9dfdSAndroid Build Coastguard Worker
88*387f9dfdSAndroid Build Coastguard Worker# date > date.txt
89*387f9dfdSAndroid Build Coastguard Worker# cksum date.txt
90*387f9dfdSAndroid Build Coastguard Worker
91*387f9dfdSAndroid Build Coastguard WorkerThe output of btrfsslower now includes open operations ("O"), and writes ("W").
92*387f9dfdSAndroid Build Coastguard WorkerThe first read from cksum(1) returned 29 bytes, and the second returned 0:
93*387f9dfdSAndroid Build Coastguard Workercausing cksum(1) to stop reading.
94*387f9dfdSAndroid Build Coastguard Worker
95*387f9dfdSAndroid Build Coastguard Worker
96*387f9dfdSAndroid Build Coastguard WorkerA -j option will print just the fields (parsable output, csv):
97*387f9dfdSAndroid Build Coastguard Worker
98*387f9dfdSAndroid Build Coastguard Worker# ./btrfsslower -j 1
99*387f9dfdSAndroid Build Coastguard WorkerENDTIME_us,TASK,PID,TYPE,BYTES,OFFSET_b,LATENCY_us,FILE
100*387f9dfdSAndroid Build Coastguard Worker8930665366,randread.pl,2717,R,8192,230391808,4312,data1
101*387f9dfdSAndroid Build Coastguard Worker8930670746,randread.pl,2717,R,8192,347832320,1296,data1
102*387f9dfdSAndroid Build Coastguard Worker8930675995,randread.pl,2717,R,8192,409812992,4207,data1
103*387f9dfdSAndroid Build Coastguard Worker8930680213,randread.pl,2717,R,8192,498204672,3104,data1
104*387f9dfdSAndroid Build Coastguard Worker8930685970,randread.pl,2717,R,8192,553164800,1843,data1
105*387f9dfdSAndroid Build Coastguard Worker8930687568,randread.pl,2717,R,8192,339492864,1475,data1
106*387f9dfdSAndroid Build Coastguard Worker8930694108,randread.pl,2717,R,8192,500711424,6276,data1
107*387f9dfdSAndroid Build Coastguard Worker8930697139,randread.pl,2717,R,8192,485801984,2180,data1
108*387f9dfdSAndroid Build Coastguard Worker8930705755,randread.pl,2717,R,8192,376922112,7535,data1
109*387f9dfdSAndroid Build Coastguard Worker8930711340,randread.pl,2717,R,8192,380084224,3314,data1
110*387f9dfdSAndroid Build Coastguard Worker8930740964,randread.pl,2717,R,8192,226091008,24762,data1
111*387f9dfdSAndroid Build Coastguard Worker8930743169,randread.pl,2717,R,8192,361570304,1809,data1
112*387f9dfdSAndroid Build Coastguard Worker8930748789,randread.pl,2717,R,8192,346931200,1530,data1
113*387f9dfdSAndroid Build Coastguard Worker8930763514,randread.pl,2717,R,8192,59719680,13938,data1
114*387f9dfdSAndroid Build Coastguard Worker8930764870,randread.pl,2717,R,8192,406511616,1313,data1
115*387f9dfdSAndroid Build Coastguard Worker8930774327,randread.pl,2717,R,8192,661430272,7361,data1
116*387f9dfdSAndroid Build Coastguard Worker8930780360,randread.pl,2717,R,8192,406904832,2220,data1
117*387f9dfdSAndroid Build Coastguard Worker8930785736,randread.pl,2717,R,8192,523419648,2005,data1
118*387f9dfdSAndroid Build Coastguard Worker8930794560,randread.pl,2717,R,8192,342974464,8388,data1
119*387f9dfdSAndroid Build Coastguard Worker[...]
120*387f9dfdSAndroid Build Coastguard Worker
121*387f9dfdSAndroid Build Coastguard WorkerThis may be useful for visualizing with another tool, for example, for
122*387f9dfdSAndroid Build Coastguard Workerproducing a scatter plot of ENDTIME vs LATENCY, to look for time-based
123*387f9dfdSAndroid Build Coastguard Workerpatterns.
124*387f9dfdSAndroid Build Coastguard Worker
125*387f9dfdSAndroid Build Coastguard Worker
126*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
127*387f9dfdSAndroid Build Coastguard Worker
128*387f9dfdSAndroid Build Coastguard Worker# ./btrfsslower -h
129*387f9dfdSAndroid Build Coastguard Workerusage: btrfsslower [-h] [-j] [-p PID] [min_ms] [-d DURATION]
130*387f9dfdSAndroid Build Coastguard Worker
131*387f9dfdSAndroid Build Coastguard WorkerTrace common btrfs file operations slower than a threshold
132*387f9dfdSAndroid Build Coastguard Worker
133*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
134*387f9dfdSAndroid Build Coastguard Worker  min_ms             minimum I/O duration to trace, in ms (default 10)
135*387f9dfdSAndroid Build Coastguard Worker
136*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
137*387f9dfdSAndroid Build Coastguard Worker  -h, --help         show this help message and exit
138*387f9dfdSAndroid Build Coastguard Worker  -j, --csv          just print fields: comma-separated values
139*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID  trace this PID only
140*387f9dfdSAndroid Build Coastguard Worker  -d DURATION, --duration DURATION
141*387f9dfdSAndroid Build Coastguard Worker                     total duration of trace in seconds
142*387f9dfdSAndroid Build Coastguard Worker
143*387f9dfdSAndroid Build Coastguard Workerexamples:
144*387f9dfdSAndroid Build Coastguard Worker    ./btrfsslower             # trace operations slower than 10 ms (default)
145*387f9dfdSAndroid Build Coastguard Worker    ./btrfsslower 1           # trace operations slower than 1 ms
146*387f9dfdSAndroid Build Coastguard Worker    ./btrfsslower -j 1        # ... 1 ms, parsable output (csv)
147*387f9dfdSAndroid Build Coastguard Worker    ./btrfsslower 0           # trace all operations (warning: verbose)
148*387f9dfdSAndroid Build Coastguard Worker    ./btrfsslower -p 185      # trace PID 185 only
149*387f9dfdSAndroid Build Coastguard Worker    ./btrfsslower -d 10       # trace for 10 seconds only
150*387f9dfdSAndroid Build Coastguard Worker
151