xref: /aosp_15_r20/external/bcc/tools/zfsslower_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of zfsslower, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerzfsslower shows ZFS reads, writes, opens, and fsyncs, slower than a threshold.
5*387f9dfdSAndroid Build Coastguard WorkerIt has been written to work on ZFS on Linux (http://zfsonlinux.org). For
6*387f9dfdSAndroid Build Coastguard Workerexample:
7*387f9dfdSAndroid Build Coastguard Worker
8*387f9dfdSAndroid Build Coastguard Worker# ./zfsslower
9*387f9dfdSAndroid Build Coastguard WorkerTracing ZFS operations slower than 10 ms
10*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
11*387f9dfdSAndroid Build Coastguard Worker06:31:28 dd             25570  W 131072  38784     303.92 data1
12*387f9dfdSAndroid Build Coastguard Worker06:31:34 dd             25686  W 131072  38784     388.28 data1
13*387f9dfdSAndroid Build Coastguard Worker06:31:35 dd             25686  W 131072  78720     519.66 data1
14*387f9dfdSAndroid Build Coastguard Worker06:31:35 dd             25686  W 131072  116992    405.94 data1
15*387f9dfdSAndroid Build Coastguard Worker06:31:35 dd             25686  W 131072  153600    433.52 data1
16*387f9dfdSAndroid Build Coastguard Worker06:31:36 dd             25686  W 131072  188672    314.37 data1
17*387f9dfdSAndroid Build Coastguard Worker06:31:36 dd             25686  W 131072  222336    372.33 data1
18*387f9dfdSAndroid Build Coastguard Worker06:31:36 dd             25686  W 131072  254592    309.59 data1
19*387f9dfdSAndroid Build Coastguard Worker06:31:37 dd             25686  W 131072  285440    304.52 data1
20*387f9dfdSAndroid Build Coastguard Worker06:31:37 dd             25686  W 131072  315008    236.45 data1
21*387f9dfdSAndroid Build Coastguard Worker06:31:37 dd             25686  W 131072  343424    193.54 data1
22*387f9dfdSAndroid Build Coastguard Worker06:31:38 dd             25686  W 131072  370560    286.07 data1
23*387f9dfdSAndroid Build Coastguard Worker06:31:38 dd             25686  W 131072  396672    251.92 data1
24*387f9dfdSAndroid Build Coastguard Worker[...]
25*387f9dfdSAndroid Build Coastguard Worker
26*387f9dfdSAndroid Build Coastguard WorkerThis shows writes to a "data1" file, each taking well over the 10 ms threshold.
27*387f9dfdSAndroid Build Coastguard Workerthe slowest, on the 3rd line of output, reached 519.66 ms for a 128 Kbyte
28*387f9dfdSAndroid Build Coastguard Workerwrite by the "dd" command.
29*387f9dfdSAndroid Build Coastguard Worker
30*387f9dfdSAndroid Build Coastguard WorkerThis "latency" is measured from when the operation was issued from the VFS
31*387f9dfdSAndroid Build Coastguard Workerinterface to the file system (via the ZFS POSIX layer), to when it completed.
32*387f9dfdSAndroid Build Coastguard WorkerThis spans everything: block device I/O (disk I/O), file system CPU cycles,
33*387f9dfdSAndroid Build Coastguard Workerfile system locks, run queue latency, etc. This is a better measure of the
34*387f9dfdSAndroid Build Coastguard Workerlatency suffered by applications reading from the file system than measuring
35*387f9dfdSAndroid Build Coastguard Workerthis down at the block device interface.
36*387f9dfdSAndroid Build Coastguard Worker
37*387f9dfdSAndroid Build Coastguard WorkerNote that this only traces the common file system operations previously
38*387f9dfdSAndroid Build Coastguard Workerlisted: other file system operations (eg, inode operations including
39*387f9dfdSAndroid Build Coastguard Workergetattr()) are not traced.
40*387f9dfdSAndroid Build Coastguard Worker
41*387f9dfdSAndroid Build Coastguard Worker
42*387f9dfdSAndroid Build Coastguard WorkerA threshold of 0 will trace all operations. Warning: the output will be
43*387f9dfdSAndroid Build Coastguard Workerverbose, as it will include all file system cache hits.
44*387f9dfdSAndroid Build Coastguard Worker
45*387f9dfdSAndroid Build Coastguard Worker# ./zfsslower 0
46*387f9dfdSAndroid Build Coastguard WorkerTracing ZFS operations
47*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
48*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  O 0       0           0.01 data1
49*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  0           0.25 data1
50*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  128         0.03 data1
51*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  256         0.04 data1
52*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  384         0.04 data1
53*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  512         0.04 data1
54*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  640         0.03 data1
55*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  768         0.03 data1
56*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  896         0.04 data1
57*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  1024        0.28 data1
58*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  1152        0.04 data1
59*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  1280        0.03 data1
60*387f9dfdSAndroid Build Coastguard Worker[...]
61*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  13824       0.04 data1
62*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  13952       0.04 data1
63*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  14080       0.04 data1
64*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  14208     398.92 data1
65*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  14336       0.04 data1
66*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  14464       0.04 data1
67*387f9dfdSAndroid Build Coastguard Worker06:36:07 dd             32242  W 131072  15104       0.03 data1
68*387f9dfdSAndroid Build Coastguard Worker[...]
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard WorkerThe output now includes the open operation for this file ("O"), and then the
71*387f9dfdSAndroid Build Coastguard Workerwrites. Most of the writes are very fast, with only an occasional outlier that
72*387f9dfdSAndroid Build Coastguard Workeris in the hundreds of milliseconds.
73*387f9dfdSAndroid Build Coastguard Worker
74*387f9dfdSAndroid Build Coastguard WorkerFortunately this is not a real world environment: I setup a zpool on top of a
75*387f9dfdSAndroid Build Coastguard WorkerXFS file system for testing purposes. More debugging using other tools will
76*387f9dfdSAndroid Build Coastguard Workerexplain these outliers: possibly XFS flushing.
77*387f9dfdSAndroid Build Coastguard Worker
78*387f9dfdSAndroid Build Coastguard Worker
79*387f9dfdSAndroid Build Coastguard WorkerHere's a random read workload, and showing operations slower than 1 ms:
80*387f9dfdSAndroid Build Coastguard Worker
81*387f9dfdSAndroid Build Coastguard Worker# ./zfsslower 1
82*387f9dfdSAndroid Build Coastguard WorkerTracing ZFS operations slower than 1 ms
83*387f9dfdSAndroid Build Coastguard WorkerTIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
84*387f9dfdSAndroid Build Coastguard Worker06:47:30 randread.pl    15431  R 8192    97840       1.03 data1
85*387f9dfdSAndroid Build Coastguard Worker06:47:30 randread.pl    15431  R 8192    416744      1.12 data1
86*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    228856      1.96 data1
87*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    452248      1.02 data1
88*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    315288      5.90 data1
89*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    752696      1.20 data1
90*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    481832      1.39 data1
91*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    673752      1.39 data1
92*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    691736      1.01 data1
93*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    694776      1.78 data1
94*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    403328      3.75 data1
95*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    567688      1.08 data1
96*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    694280      1.31 data1
97*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    669280      1.06 data1
98*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    426608      1.56 data1
99*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    42512       1.01 data1
100*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    22944       1.33 data1
101*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    427432      1.48 data1
102*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    261320      1.28 data1
103*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    132248      1.23 data1
104*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    96936       1.04 data1
105*387f9dfdSAndroid Build Coastguard Worker06:47:31 randread.pl    15431  R 8192    482800      2.63 data1
106*387f9dfdSAndroid Build Coastguard Worker[...]
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# ./zfsslower -j 1
112*387f9dfdSAndroid Build Coastguard WorkerENDTIME_us,TASK,PID,TYPE,BYTES,OFFSET_b,LATENCY_us,FILE
113*387f9dfdSAndroid Build Coastguard Worker252305490911,randread.pl,17922,R,8192,163446784,1156,data1
114*387f9dfdSAndroid Build Coastguard Worker252305493852,randread.pl,17922,R,8192,321437696,1129,data1
115*387f9dfdSAndroid Build Coastguard Worker252305498839,randread.pl,17922,R,8192,475152384,1154,data1
116*387f9dfdSAndroid Build Coastguard Worker252305505515,randread.pl,17922,R,8192,49094656,1082,data1
117*387f9dfdSAndroid Build Coastguard Worker252305506774,randread.pl,17922,R,8192,470401024,1245,data1
118*387f9dfdSAndroid Build Coastguard Worker252305509265,randread.pl,17922,R,8192,553246720,2412,data1
119*387f9dfdSAndroid Build Coastguard Worker252305512365,randread.pl,17922,R,8192,20963328,1093,data1
120*387f9dfdSAndroid Build Coastguard Worker252305513755,randread.pl,17922,R,8192,304111616,1350,data1
121*387f9dfdSAndroid Build Coastguard Worker252305583330,randread.pl,17922,R,8192,166174720,1154,data1
122*387f9dfdSAndroid Build Coastguard Worker252305593913,randread.pl,17922,R,8192,175079424,1241,data1
123*387f9dfdSAndroid Build Coastguard Worker252305602833,randread.pl,17922,R,8192,305340416,3307,data1
124*387f9dfdSAndroid Build Coastguard Worker252305608663,randread.pl,17922,R,8192,655958016,2704,data1
125*387f9dfdSAndroid Build Coastguard Worker252305611212,randread.pl,17922,R,8192,40951808,1033,data1
126*387f9dfdSAndroid Build Coastguard Worker252305614609,randread.pl,17922,R,8192,318922752,2687,data1
127*387f9dfdSAndroid Build Coastguard Worker252305623800,randread.pl,17922,R,8192,246734848,2983,data1
128*387f9dfdSAndroid Build Coastguard Worker252305711125,randread.pl,17922,R,8192,581795840,1091,data1
129*387f9dfdSAndroid Build Coastguard Worker252305728694,randread.pl,17922,R,8192,710483968,1034,data1
130*387f9dfdSAndroid Build Coastguard Worker252305762046,randread.pl,17922,R,8192,329367552,1405,data1
131*387f9dfdSAndroid Build Coastguard Worker252305798215,randread.pl,17922,R,8192,44482560,1030,data1
132*387f9dfdSAndroid Build Coastguard Worker252305806748,randread.pl,17922,R,8192,660602880,1069,data1
133*387f9dfdSAndroid Build Coastguard Worker252305826360,randread.pl,17922,R,8192,616144896,2327,data1
134*387f9dfdSAndroid Build Coastguard Worker[...]
135*387f9dfdSAndroid Build Coastguard Worker
136*387f9dfdSAndroid Build Coastguard Worker
137*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
138*387f9dfdSAndroid Build Coastguard Worker
139*387f9dfdSAndroid Build Coastguard Worker# ./zfsslower -h
140*387f9dfdSAndroid Build Coastguard Workerusage: zfsslower [-h] [-j] [-p PID] [min_ms]
141*387f9dfdSAndroid Build Coastguard Worker
142*387f9dfdSAndroid Build Coastguard WorkerTrace common ZFS file operations slower than a threshold
143*387f9dfdSAndroid Build Coastguard Worker
144*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
145*387f9dfdSAndroid Build Coastguard Worker  min_ms             minimum I/O duration to trace, in ms (default 10)
146*387f9dfdSAndroid Build Coastguard Worker
147*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
148*387f9dfdSAndroid Build Coastguard Worker  -h, --help         show this help message and exit
149*387f9dfdSAndroid Build Coastguard Worker  -j, --csv          just print fields: comma-separated values
150*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID  trace this PID only
151*387f9dfdSAndroid Build Coastguard Worker
152*387f9dfdSAndroid Build Coastguard Workerexamples:
153*387f9dfdSAndroid Build Coastguard Worker    ./zfsslower             # trace operations slower than 10 ms (default)
154*387f9dfdSAndroid Build Coastguard Worker    ./zfsslower 1           # trace operations slower than 1 ms
155*387f9dfdSAndroid Build Coastguard Worker    ./zfsslower -j 1        # ... 1 ms, parsable output (csv)
156*387f9dfdSAndroid Build Coastguard Worker    ./zfsslower 0           # trace all operations (warning: verbose)
157*387f9dfdSAndroid Build Coastguard Worker    ./zfsslower -p 185      # trace PID 185 only
158