xref: /aosp_15_r20/external/bcc/libbpf-tools/tcppktlat_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of tcppktlat, the Linux BPF CO-RE version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Workertcppktlat traces latency between TCP received pkt and picked up by userspace thread system-wide, and prints various details.
4*387f9dfdSAndroid Build Coastguard WorkerExample output:
5*387f9dfdSAndroid Build Coastguard Worker
6*387f9dfdSAndroid Build Coastguard Worker# tcppktlat
7*387f9dfdSAndroid Build Coastguard WorkerPID     COMM             LADDR           LPORT RADDR           RPORT MS
8*387f9dfdSAndroid Build Coastguard Worker4424    etcd             127.0.0.1       2379  127.0.0.1       53202 0.06
9*387f9dfdSAndroid Build Coastguard Worker4405    kube-apiserver   127.0.0.1       53202 127.0.0.1       2379  0.06
10*387f9dfdSAndroid Build Coastguard Worker1370211 wakatime-cli     172.22.130.115  59394 143.244.210.202 443   2.75
11*387f9dfdSAndroid Build Coastguard Worker3894    kubelet          172.18.0.3      51584 172.18.0.4      6443  0.08
12*387f9dfdSAndroid Build Coastguard Worker^C
13*387f9dfdSAndroid Build Coastguard Worker
14*387f9dfdSAndroid Build Coastguard WorkerIn the process of tracing, when a network soft interrupt reads a TCP packet, it is placed into the corresponding socket's receive queue, and then copied from kernel space to user space by a user-level thread. The latency between receiving the packet and it being retrieved can be used to determine if there are any performance issues in the user-level path for handling received TCP packet.
15*387f9dfdSAndroid Build Coastguard Worker
16*387f9dfdSAndroid Build Coastguard WorkerThe -l option can be used to filter on a local port, which is filtered in-kernel.
17*387f9dfdSAndroid Build Coastguard Worker
18*387f9dfdSAndroid Build Coastguard Worker# tcppktlat -l 7000
19*387f9dfdSAndroid Build Coastguard WorkerPID     COMM             LADDR           LPORT RADDR           RPORT MS
20*387f9dfdSAndroid Build Coastguard Worker1354840 server           127.0.0.1       7000  127.0.0.1       43932 0.05
21*387f9dfdSAndroid Build Coastguard Worker1354840 server           127.0.0.1       7000  127.0.0.1       43932 4.88
22*387f9dfdSAndroid Build Coastguard Worker1354840 server           127.0.0.1       7000  127.0.0.1       43932 6.02
23*387f9dfdSAndroid Build Coastguard Worker^C
24*387f9dfdSAndroid Build Coastguard Worker
25*387f9dfdSAndroid Build Coastguard WorkerThe output shows server experiences jitter and higher latency in reading data, requiring troubleshooting.
26*387f9dfdSAndroid Build Coastguard Worker
27*387f9dfdSAndroid Build Coastguard Worker
28*387f9dfdSAndroid Build Coastguard WorkerWe can use minimum latency(us) as a filtering condition.
29*387f9dfdSAndroid Build Coastguard Worker
30*387f9dfdSAndroid Build Coastguard Worker# tcppktlat 1000
31*387f9dfdSAndroid Build Coastguard WorkerPID     COMM             LADDR           LPORT RADDR           RPORT MS
32*387f9dfdSAndroid Build Coastguard Worker1354840 server           127.0.0.1       7000  127.0.0.1       35924 130.21
33*387f9dfdSAndroid Build Coastguard Worker1370211 wakatime-cli     172.22.130.115  59394 143.244.210.202 443   2.75
34*387f9dfdSAndroid Build Coastguard Worker4405    kube-apiserver   ::              6443  ::              55726 1.61
35*387f9dfdSAndroid Build Coastguard Worker1370227 wakatime-cli     172.22.130.115  50642 143.244.210.202 443   2.80
36*387f9dfdSAndroid Build Coastguard Worker4405    kube-apiserver   127.0.0.1       53178 127.0.0.1       2379  1.57
37*387f9dfdSAndroid Build Coastguard Worker1370281 wakatime-cli     172.22.130.115  40908 143.244.210.202 443   3.31
38*387f9dfdSAndroid Build Coastguard Worker1370315 sshd             127.0.0.1       22    127.0.0.1       42070 6.41
39*387f9dfdSAndroid Build Coastguard Worker^C
40*387f9dfdSAndroid Build Coastguard Worker
41*387f9dfdSAndroid Build Coastguard Worker
42*387f9dfdSAndroid Build Coastguard Worker# tcppktlat --help
43*387f9dfdSAndroid Build Coastguard WorkerUsage: tcppktlat [OPTION...]
44*387f9dfdSAndroid Build Coastguard WorkerTrace latency between TCP received pkt and picked up by userspace thread.
45*387f9dfdSAndroid Build Coastguard Worker
46*387f9dfdSAndroid Build Coastguard WorkerUSAGE: tcppktlat [--help] [-T] [-p PID] [-t TID] [-l LPORT] [-r RPORT] [-v]
47*387f9dfdSAndroid Build Coastguard Worker
48*387f9dfdSAndroid Build Coastguard WorkerEXAMPLES:
49*387f9dfdSAndroid Build Coastguard Worker    tcppktlat             # Trace all TCP packet picked up latency
50*387f9dfdSAndroid Build Coastguard Worker    tcppktlat -T          # summarize with timestamps
51*387f9dfdSAndroid Build Coastguard Worker    tcppktlat -p          # filter for pid
52*387f9dfdSAndroid Build Coastguard Worker    tcppktlat -t          # filter for tid
53*387f9dfdSAndroid Build Coastguard Worker    tcppktlat -l          # filter for local port
54*387f9dfdSAndroid Build Coastguard Worker    tcppktlat -r          # filter for remote port
55*387f9dfdSAndroid Build Coastguard Worker    tcppktlat 1000        # filter for latency higher than 1000us
56*387f9dfdSAndroid Build Coastguard Worker
57*387f9dfdSAndroid Build Coastguard Worker  -l, --lport=LPORT          filter for local port
58*387f9dfdSAndroid Build Coastguard Worker  -p, --pid=PID              Process PID to trace
59*387f9dfdSAndroid Build Coastguard Worker  -r, --rport=RPORT          filter for remote port
60*387f9dfdSAndroid Build Coastguard Worker  -t, --tid=TID              Thread TID to trace
61*387f9dfdSAndroid Build Coastguard Worker  -T, --timestamp            include timestamp on output
62*387f9dfdSAndroid Build Coastguard Worker  -v, --verbose              Verbose debug output
63*387f9dfdSAndroid Build Coastguard Worker  -?, --help                 Give this help list
64*387f9dfdSAndroid Build Coastguard Worker      --usage                Give a short usage message
65*387f9dfdSAndroid Build Coastguard Worker  -V, --version              Print program version
66*387f9dfdSAndroid Build Coastguard Worker
67*387f9dfdSAndroid Build Coastguard WorkerMandatory or optional arguments to long options are also mandatory or optional
68*387f9dfdSAndroid Build Coastguard Workerfor any corresponding short options.
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard WorkerReport bugs to https://github.com/iovisor/bcc/tree/master/libbpf-tools.
71