xref: /aosp_15_r20/external/bcc/tools/tcprtt_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of tcprtt, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard WorkerThis program traces TCP RTT(round-trip time) to analyze the quality of
5*387f9dfdSAndroid Build Coastguard Workernetwork, then help us to distinguish the network latency trouble is from
6*387f9dfdSAndroid Build Coastguard Workeruser process or physical network.
7*387f9dfdSAndroid Build Coastguard Worker
8*387f9dfdSAndroid Build Coastguard WorkerFor example, wrk show the http request latency distribution:
9*387f9dfdSAndroid Build Coastguard Worker# wrk -d 30 -c 10 --latency http://192.168.122.100/index.html
10*387f9dfdSAndroid Build Coastguard WorkerRunning 30s test @ http://192.168.122.100/index.html
11*387f9dfdSAndroid Build Coastguard Worker  2 threads and 10 connections
12*387f9dfdSAndroid Build Coastguard Worker  Thread Stats   Avg      Stdev     Max   +/- Stdev
13*387f9dfdSAndroid Build Coastguard Worker    Latency    86.75ms  153.76ms   1.54s    90.85%
14*387f9dfdSAndroid Build Coastguard Worker    Req/Sec   160.91     76.07   424.00     67.06%
15*387f9dfdSAndroid Build Coastguard Worker  Latency Distribution
16*387f9dfdSAndroid Build Coastguard Worker     50%   14.55ms
17*387f9dfdSAndroid Build Coastguard Worker     75%  119.21ms
18*387f9dfdSAndroid Build Coastguard Worker     90%  230.22ms
19*387f9dfdSAndroid Build Coastguard Worker     99%  726.90ms
20*387f9dfdSAndroid Build Coastguard Worker  9523 requests in 30.02s, 69.62MB read
21*387f9dfdSAndroid Build Coastguard Worker  Socket errors: connect 0, read 0, write 0, timeout 1
22*387f9dfdSAndroid Build Coastguard Worker
23*387f9dfdSAndroid Build Coastguard WorkerDuring wrk testing, run tcprtt:
24*387f9dfdSAndroid Build Coastguard Worker# ./tcprtt -i 1 -d 10 -m
25*387f9dfdSAndroid Build Coastguard WorkerTracing TCP RTT... Hit Ctrl-C to end.
26*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
27*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 4        |                                        |
28*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
29*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 1055     |****************************************|
30*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 26       |                                        |
31*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
32*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
33*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 18       |                                        |
34*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 14       |                                        |
35*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 14       |                                        |
36*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 12       |                                        |
37*387f9dfdSAndroid Build Coastguard Worker
38*387f9dfdSAndroid Build Coastguard WorkerThe wrk output shows that the latency of web service is not stable, and tcprtt
39*387f9dfdSAndroid Build Coastguard Workeralso shows unstable TCP RTT. So in this situation, we need to make sure the
40*387f9dfdSAndroid Build Coastguard Workerquality of network is good or not firstly.
41*387f9dfdSAndroid Build Coastguard Worker
42*387f9dfdSAndroid Build Coastguard Worker
43*387f9dfdSAndroid Build Coastguard WorkerUse filter for address and(or) port. Ex, only collect local address 192.168.122.200
44*387f9dfdSAndroid Build Coastguard Workerand remote address 192.168.122.100 and remote port 80.
45*387f9dfdSAndroid Build Coastguard Worker# ./tcprtt -i 1 -d 10 -m -a 192.168.122.200 -A 192.168.122.100 -P 80
46*387f9dfdSAndroid Build Coastguard Worker
47*387f9dfdSAndroid Build Coastguard Worker
48*387f9dfdSAndroid Build Coastguard WorkerTracing at server side, show each clients with its own histogram.
49*387f9dfdSAndroid Build Coastguard WorkerFor example, run tcprtt on a storage node to show initiators' rtt histogram:
50*387f9dfdSAndroid Build Coastguard Worker# ./tcprtt -i 1 --lport 3260 --byraddr -e
51*387f9dfdSAndroid Build Coastguard WorkerTracing TCP RTT... Hit Ctrl-C to end.
52*387f9dfdSAndroid Build Coastguard Worker
53*387f9dfdSAndroid Build Coastguard Worker
54*387f9dfdSAndroid Build Coastguard WorkerRemote Addres = 10.194.87.206 [AVG 170]
55*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
56*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
57*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
58*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
59*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
60*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
61*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 31       |                                        |
62*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 5150     |*******************                     |
63*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 10327    |****************************************|
64*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 1014     |***                                     |
65*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 10       |                                        |
66*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 7        |                                        |
67*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 14       |                                        |
68*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 10       |                                        |
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard WorkerRemote Addres = 10.194.87.197 [AVG 4293]
71*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
72*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
73*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
74*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
75*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
76*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
77*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
78*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
79*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
80*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
81*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
82*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 3        |********                                |
83*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 12       |**********************************      |
84*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 14       |****************************************|
85*387f9dfdSAndroid Build Coastguard Worker
86*387f9dfdSAndroid Build Coastguard WorkerRemote Addres = 10.194.88.148 [AVG 6215]
87*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
88*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
89*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
90*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
91*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
92*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
93*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
94*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
95*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
96*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
97*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
98*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 0        |                                        |
99*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 0        |                                        |
100*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 2        |****************************************|
101*387f9dfdSAndroid Build Coastguard Worker
102*387f9dfdSAndroid Build Coastguard WorkerRemote Addres = 10.194.87.90 [AVG 2188]
103*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
104*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
105*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
106*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
107*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
108*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
109*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
110*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
111*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
112*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 15       |*********                               |
113*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 30       |******************                      |
114*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 50       |******************************          |
115*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 65       |****************************************|
116*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 22       |*************                           |
117*387f9dfdSAndroid Build Coastguard Worker
118*387f9dfdSAndroid Build Coastguard Worker....
119*387f9dfdSAndroid Build Coastguard Worker
120*387f9dfdSAndroid Build Coastguard Worker
121*387f9dfdSAndroid Build Coastguard WorkerUse -e(--extension) to show extension RTT:
122*387f9dfdSAndroid Build Coastguard Worker# ./tcprtt -i 1 -e
123*387f9dfdSAndroid Build Coastguard Worker
124*387f9dfdSAndroid Build Coastguard WorkerAll Addresses = ******* [AVG 324]
125*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
126*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
127*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
128*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
129*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
130*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
131*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
132*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 5360     |********                                |
133*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 23834    |****************************************|
134*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 11276    |******************                      |
135*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 700      |*                                       |
136*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 434      |                                        |
137*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 356      |                                        |
138*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 328      |                                        |
139*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 91       |                                        |
140*387f9dfdSAndroid Build Coastguard Worker
141*387f9dfdSAndroid Build Coastguard Worker
142*387f9dfdSAndroid Build Coastguard WorkerFull USAGE:
143*387f9dfdSAndroid Build Coastguard Worker
144*387f9dfdSAndroid Build Coastguard Worker# ./tcprtt -h
145*387f9dfdSAndroid Build Coastguard Workerusage: tcprtt [-h] [-i INTERVAL] [-d DURATION] [-T] [-m] [-p LPORT]
146*387f9dfdSAndroid Build Coastguard Worker              [-P RPORT] [-a LADDR] [-A RADDR] [-b] [-B] [-e] [-D]
147*387f9dfdSAndroid Build Coastguard Worker              [-4 | -6]
148*387f9dfdSAndroid Build Coastguard Worker
149*387f9dfdSAndroid Build Coastguard WorkerSummarize TCP RTT as a histogram
150*387f9dfdSAndroid Build Coastguard Worker
151*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
152*387f9dfdSAndroid Build Coastguard Worker  -h, --help            show this help message and exit
153*387f9dfdSAndroid Build Coastguard Worker  -i INTERVAL, --interval INTERVAL
154*387f9dfdSAndroid Build Coastguard Worker                        summary interval, seconds
155*387f9dfdSAndroid Build Coastguard Worker  -d DURATION, --duration DURATION
156*387f9dfdSAndroid Build Coastguard Worker                        total duration of trace, seconds
157*387f9dfdSAndroid Build Coastguard Worker  -T, --timestamp       include timestamp on output
158*387f9dfdSAndroid Build Coastguard Worker  -m, --milliseconds    millisecond histogram
159*387f9dfdSAndroid Build Coastguard Worker  -p LPORT, --lport LPORT
160*387f9dfdSAndroid Build Coastguard Worker                        filter for local port
161*387f9dfdSAndroid Build Coastguard Worker  -P RPORT, --rport RPORT
162*387f9dfdSAndroid Build Coastguard Worker                        filter for remote port
163*387f9dfdSAndroid Build Coastguard Worker  -a LADDR, --laddr LADDR
164*387f9dfdSAndroid Build Coastguard Worker                        filter for local address
165*387f9dfdSAndroid Build Coastguard Worker  -A RADDR, --raddr RADDR
166*387f9dfdSAndroid Build Coastguard Worker                        filter for remote address
167*387f9dfdSAndroid Build Coastguard Worker  -b, --byladdr         show sockets histogram by local address
168*387f9dfdSAndroid Build Coastguard Worker  -B, --byraddr         show sockets histogram by remote address
169*387f9dfdSAndroid Build Coastguard Worker  -e, --extension       show extension summary(average)
170*387f9dfdSAndroid Build Coastguard Worker  -D, --debug           print BPF program before starting (for debugging
171*387f9dfdSAndroid Build Coastguard Worker                        purposes)
172*387f9dfdSAndroid Build Coastguard Worker  -4, --ipv4            trace IPv4 family only
173*387f9dfdSAndroid Build Coastguard Worker  -6, --ipv6            trace IPv6 family only
174*387f9dfdSAndroid Build Coastguard Worker
175*387f9dfdSAndroid Build Coastguard Workerexamples:
176*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt            # summarize TCP RTT
177*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -i 1 -d 10 # print 1 second summaries, 10 times
178*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -m -T      # summarize in millisecond, and timestamps
179*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -p         # filter for local port
180*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -P         # filter for remote port
181*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -a         # filter for local address
182*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -A         # filter for remote address
183*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -b         # show sockets histogram by local address
184*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -B         # show sockets histogram by remote address
185*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -D         # show debug bpf text
186*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -e         # show extension summary(average)
187*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -4         # trace IPv4 family only
188*387f9dfdSAndroid Build Coastguard Worker    ./tcprtt -6         # trace IPv6 family only
189