xref: /aosp_15_r20/external/bcc/tools/ext4slower_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of ext4slower, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerext4slower shows ext4 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# ./ext4slower
8*387f9dfdSAndroid Build Coastguard WorkerTracing ext4 operations slower than 10 ms
9*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
10*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16464  R 1249    0          16.05 common-auth
11*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16463  R 1249    0          16.04 common-auth
12*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16465  R 1249    0          16.03 common-auth
13*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16465  R 4096    0          10.62 login.defs
14*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16464  R 4096    0          10.61 login.defs
15*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16463  R 4096    0          10.63 login.defs
16*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16465  R 2972    0          18.52 pam_env.conf
17*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16464  R 2972    0          18.51 pam_env.conf
18*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16463  R 2972    0          18.49 pam_env.conf
19*387f9dfdSAndroid Build Coastguard Worker06:35:01 dumpsystemstat 16473  R 128     0          12.58 date
20*387f9dfdSAndroid Build Coastguard Worker06:35:01 debian-sa1     16474  R 283     0          12.66 sysstat
21*387f9dfdSAndroid Build Coastguard Worker06:35:01 debian-sa1     16474  R 128     0          10.39 sa1
22*387f9dfdSAndroid Build Coastguard Worker06:35:01 dumpsystemstat 16491  R 128     0          13.22 ifconfig
23*387f9dfdSAndroid Build Coastguard Worker06:35:01 DumpThreads    16534  R 128     0          12.78 cut
24*387f9dfdSAndroid Build Coastguard Worker06:35:01 cron           16545  R 128     0          14.76 sendmail
25*387f9dfdSAndroid Build Coastguard Worker06:35:01 sendmail       16545  R 274     0          10.88 dynamicmaps.cf
26*387f9dfdSAndroid Build Coastguard Worker06:35:02 postdrop       16546  R 118     0          32.94 Universal
27*387f9dfdSAndroid Build Coastguard Worker06:35:02 pickup         9574   R 118     0          21.02 localtime
28*387f9dfdSAndroid Build Coastguard Worker[...]
29*387f9dfdSAndroid Build Coastguard Worker
30*387f9dfdSAndroid Build Coastguard WorkerThis shows various system tasks reading from ext4. The high latency here is
31*387f9dfdSAndroid Build Coastguard Workerdue to disk I/O, as I had just evicted the file system cache for this example.
32*387f9dfdSAndroid Build Coastguard Worker
33*387f9dfdSAndroid Build Coastguard WorkerThis "latency" is measured from when the operation was issued from the VFS
34*387f9dfdSAndroid Build Coastguard Workerinterface to the file system, to when it completed. This spans everything:
35*387f9dfdSAndroid Build Coastguard Workerblock device I/O (disk I/O), file system CPU cycles, file system locks, run
36*387f9dfdSAndroid Build Coastguard Workerqueue latency, etc. This is a better measure of the latency suffered by
37*387f9dfdSAndroid Build Coastguard Workerapplications reading from the file system than measuring this down at the
38*387f9dfdSAndroid Build Coastguard Workerblock device interface.
39*387f9dfdSAndroid Build Coastguard Worker
40*387f9dfdSAndroid Build Coastguard WorkerNote that this only traces the common file system operations previously
41*387f9dfdSAndroid Build Coastguard Workerlisted: other file system operations (eg, inode operations including
42*387f9dfdSAndroid Build Coastguard Workergetattr()) are not traced.
43*387f9dfdSAndroid Build Coastguard Worker
44*387f9dfdSAndroid Build Coastguard Worker
45*387f9dfdSAndroid Build Coastguard WorkerThe threshold can be provided as an argument. Eg, I/O slower than 1 ms:
46*387f9dfdSAndroid Build Coastguard Worker
47*387f9dfdSAndroid Build Coastguard Worker# ./ext4slower 1
48*387f9dfdSAndroid Build Coastguard WorkerTracing ext4 operations slower than 1 ms
49*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
50*387f9dfdSAndroid Build Coastguard Worker06:49:17 bash           3616   R 128     0           7.75 cksum
51*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 39552   0           1.34 [
52*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 96      0           5.36 2to3-2.7
53*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 96      0          14.94 2to3-3.4
54*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 10320   0           6.82 411toppm
55*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   0           4.01 a2p
56*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 55400   0           8.77 ab
57*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 36792   0          16.34 aclocal-1.14
58*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 15008   0          19.31 acpi_listen
59*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 6123    0          17.23 add-apt-repository
60*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 6280    0          18.40 addpart
61*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 27696   0           2.16 addr2line
62*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 58080   0          10.11 ag
63*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 906     0           6.30 ec2-meta-data
64*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 6320    0          10.00 animate.im6
65*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 5680    0          18.69 anytopnm
66*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 2671    0          20.27 apport-bug
67*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 12566   0          16.72 apport-cli
68*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 1622    0           7.95 apport-unpack
69*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 10440   0           2.37 appres
70*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 48112   0           5.42 whatis
71*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 14832   0           6.24 apt
72*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   0          24.74 apt-cache
73*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 27264   0           1.68 apt-cdrom
74*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 23224   0           5.31 apt-extracttemplates
75*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   0           8.08 apt-ftparchive
76*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   128         2.92 apt-ftparchive
77*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   0           9.58 aptitude-curses
78*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   128        44.25 aptitude-curses
79*387f9dfdSAndroid Build Coastguard Worker06:49:17 cksum          3616   R 65536   384         1.69 aptitude-curses
80*387f9dfdSAndroid Build Coastguard Worker[...]
81*387f9dfdSAndroid Build Coastguard Worker
82*387f9dfdSAndroid Build Coastguard WorkerThis time a cksum(1) command can be seen reading various files (from /usr/bin).
83*387f9dfdSAndroid Build Coastguard Worker
84*387f9dfdSAndroid Build Coastguard Worker
85*387f9dfdSAndroid Build Coastguard WorkerA threshold of 0 will trace all operations. Warning: the output will be
86*387f9dfdSAndroid Build Coastguard Workerverbose, as it will include all file system cache hits.
87*387f9dfdSAndroid Build Coastguard Worker
88*387f9dfdSAndroid Build Coastguard Worker# ./ext4slower 0
89*387f9dfdSAndroid Build Coastguard WorkerTracing ext4 operations
90*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
91*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1884   O 0       0           0.00 status.new
92*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1884   W 18      0           0.02 status.new
93*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1884   O 0       0           0.00 status.new
94*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1884   W 18      0           0.01 status.new
95*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  O 0       0           0.00 run
96*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  R 92      0           0.00 run
97*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  O 0       0           0.00 bash
98*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  R 128     0           0.00 bash
99*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  R 504     0           0.00 bash
100*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  R 28      0           0.00 bash
101*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  O 0       0           0.00 ld-2.19.so
102*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  R 64      0           0.00 ld-2.19.so
103*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15817  R 392     0           0.00 ld-2.19.so
104*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  O 0       0           0.00 ld.so.cache
105*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  O 0       0           0.00 libtinfo.so.5.9
106*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  R 832     0           0.00 libtinfo.so.5.9
107*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  O 0       0           0.00 libdl-2.19.so
108*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  R 832     0           0.00 libdl-2.19.so
109*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  O 0       0           0.00 libc-2.19.so
110*387f9dfdSAndroid Build Coastguard Worker06:58:05 run            15817  R 832     0           0.00 libc-2.19.so
111*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1876   O 0       0           0.00 status.new
112*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1876   W 18      0           0.01 status.new
113*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1895   O 0       0           0.00 status.new
114*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1895   W 18      0           0.02 status.new
115*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1876   O 0       0           0.00 status.new
116*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1876   W 18      0           0.01 status.new
117*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1872   O 0       0           0.00 status.new
118*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1872   W 18      0           0.02 status.new
119*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1895   O 0       0           0.00 status.new
120*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1895   W 18      0           0.01 status.new
121*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  R 92      0           0.00 run
122*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  O 0       0           0.00 bash
123*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  R 128     0           0.00 bash
124*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  R 504     0           0.00 bash
125*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  R 28      0           0.00 bash
126*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  O 0       0           0.00 ld-2.19.so
127*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  R 64      0           0.00 ld-2.19.so
128*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  R 392     0           0.00 ld-2.19.so
129*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15818  O 0       0           0.00 run
130*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1888   O 0       0           0.00 status.new
131*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1888   W 18      0           0.01 status.new
132*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1888   O 0       0           0.00 status.new
133*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1888   W 18      0           0.02 status.new
134*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  R 119     0           0.00 run
135*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  O 0       0           0.00 bash
136*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  R 128     0           0.00 bash
137*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  R 504     0           0.00 bash
138*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  R 28      0           0.00 bash
139*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  O 0       0           0.00 ld-2.19.so
140*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  R 64      0           0.00 ld-2.19.so
141*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15822  R 392     0           0.00 ld-2.19.so
142*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1892   O 0       0           0.00 status.new
143*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1892   W 18      0           0.02 status.new
144*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1892   O 0       0           0.00 status.new
145*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      1892   W 18      0           0.02 status.new
146*387f9dfdSAndroid Build Coastguard Worker06:58:05 supervise      15820  O 0       0           0.00 run
147*387f9dfdSAndroid Build Coastguard Worker[...]
148*387f9dfdSAndroid Build Coastguard Worker
149*387f9dfdSAndroid Build Coastguard WorkerThe output now includes open operations ("O"), and writes ("W").
150*387f9dfdSAndroid Build Coastguard Worker
151*387f9dfdSAndroid Build Coastguard Worker
152*387f9dfdSAndroid Build Coastguard WorkerA -j option will print just the fields (parsable output, csv):
153*387f9dfdSAndroid Build Coastguard Worker
154*387f9dfdSAndroid Build Coastguard Worker# ./ext4slower -j 1
155*387f9dfdSAndroid Build Coastguard WorkerENDTIME_us,TASK,PID,TYPE,BYTES,OFFSET_b,LATENCY_us,FILE
156*387f9dfdSAndroid Build Coastguard Worker127200712278,bash,17225,R,128,0,14329,cksum
157*387f9dfdSAndroid Build Coastguard Worker127200722986,cksum,17225,R,3274,0,8368,command-not-found
158*387f9dfdSAndroid Build Coastguard Worker127200735581,cksum,17225,R,65536,0,10903,libbfd-2.24-system.so
159*387f9dfdSAndroid Build Coastguard Worker127200738482,cksum,17225,R,65536,131072,2419,libbfd-2.24-system.so
160*387f9dfdSAndroid Build Coastguard Worker127200749226,cksum,17225,R,65536,655360,8995,libbfd-2.24-system.so
161*387f9dfdSAndroid Build Coastguard Worker127200776273,cksum,17225,R,55080,0,25297,libbind9.so.90.0.9
162*387f9dfdSAndroid Build Coastguard Worker127200784688,cksum,17225,R,65536,0,7873,libblas.so.3.0
163*387f9dfdSAndroid Build Coastguard Worker127200787551,cksum,17225,R,65536,131072,2386,libblas.so.3.0
164*387f9dfdSAndroid Build Coastguard Worker127200795524,cksum,17225,R,18624,0,4947,libcpupower.so.3.13.0-49
165*387f9dfdSAndroid Build Coastguard Worker127200802073,cksum,17225,R,65536,0,6410,libcwidget.so.3.0.0
166*387f9dfdSAndroid Build Coastguard Worker127200808718,cksum,17225,R,65536,131072,6181,libcwidget.so.3.0.0
167*387f9dfdSAndroid Build Coastguard Worker127200829518,cksum,17225,R,65536,0,14213,libdns.so.100.2.2
168*387f9dfdSAndroid Build Coastguard Worker127200832916,cksum,17225,R,65536,131072,2911,libdns.so.100.2.2
169*387f9dfdSAndroid Build Coastguard Worker127200841044,cksum,17225,R,65536,655360,6376,libdns.so.100.2.2
170*387f9dfdSAndroid Build Coastguard Worker127200853646,cksum,17225,R,956,0,1022,libdumbnet.la
171*387f9dfdSAndroid Build Coastguard Worker127200857814,cksum,17225,R,61096,0,4111,libdumbnet.so.1.0.1
172*387f9dfdSAndroid Build Coastguard Worker127200869655,cksum,17225,R,65536,0,11252,libgettextlib-0.18.3.so
173*387f9dfdSAndroid Build Coastguard Worker127200872985,cksum,17225,R,65536,131072,2882,libgettextlib-0.18.3.so
174*387f9dfdSAndroid Build Coastguard Worker127200883063,cksum,17225,R,65536,0,9661,libgettextsrc-0.18.3.so
175*387f9dfdSAndroid Build Coastguard Worker127200884767,cksum,17225,R,65536,131072,1251,libgettextsrc-0.18.3.so
176*387f9dfdSAndroid Build Coastguard Worker127200904830,cksum,17225,R,65536,0,19571,libgirepository-1.0.so.1.0.0
177*387f9dfdSAndroid Build Coastguard Worker127200906354,cksum,17225,R,65536,131072,1080,libgirepository-1.0.so.1.0.0
178*387f9dfdSAndroid Build Coastguard Worker127200936047,cksum,17225,R,65536,0,28674,libGraphicsMagick.a
179*387f9dfdSAndroid Build Coastguard Worker127200939091,cksum,17225,R,65536,131072,2576,libGraphicsMagick.a
180*387f9dfdSAndroid Build Coastguard Worker127200947295,cksum,17225,R,65536,655360,6463,libGraphicsMagick.a
181*387f9dfdSAndroid Build Coastguard Worker127200958793,cksum,17225,R,65536,1966080,7034,libGraphicsMagick.a
182*387f9dfdSAndroid Build Coastguard Worker[...]
183*387f9dfdSAndroid Build Coastguard Worker
184*387f9dfdSAndroid Build Coastguard WorkerThis may be useful for visualizing with another tool, for example, for
185*387f9dfdSAndroid Build Coastguard Workerproducing a scatter plot of ENDTIME vs LATENCY, to look for time-based
186*387f9dfdSAndroid Build Coastguard Workerpatterns.
187*387f9dfdSAndroid Build Coastguard Worker
188*387f9dfdSAndroid Build Coastguard Worker
189*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
190*387f9dfdSAndroid Build Coastguard Worker
191*387f9dfdSAndroid Build Coastguard Worker# ./ext4slower -h
192*387f9dfdSAndroid Build Coastguard Workerusage: ext4slower [-h] [-j] [-p PID] [min_ms]
193*387f9dfdSAndroid Build Coastguard Worker
194*387f9dfdSAndroid Build Coastguard WorkerTrace common ext4 file operations slower than a threshold
195*387f9dfdSAndroid Build Coastguard Worker
196*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
197*387f9dfdSAndroid Build Coastguard Worker  min_ms             minimum I/O duration to trace, in ms (default 10)
198*387f9dfdSAndroid Build Coastguard Worker
199*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
200*387f9dfdSAndroid Build Coastguard Worker  -h, --help         show this help message and exit
201*387f9dfdSAndroid Build Coastguard Worker  -j, --csv          just print fields: comma-separated values
202*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID  trace this PID only
203*387f9dfdSAndroid Build Coastguard Worker
204*387f9dfdSAndroid Build Coastguard Workerexamples:
205*387f9dfdSAndroid Build Coastguard Worker    ./ext4slower             # trace operations slower than 10 ms (default)
206*387f9dfdSAndroid Build Coastguard Worker    ./ext4slower 1           # trace operations slower than 1 ms
207*387f9dfdSAndroid Build Coastguard Worker    ./ext4slower -j 1        # ... 1 ms, parsable output (csv)
208*387f9dfdSAndroid Build Coastguard Worker    ./ext4slower 0           # trace all operations (warning: verbose)
209*387f9dfdSAndroid Build Coastguard Worker    ./ext4slower -p 185      # trace PID 185 only
210