xref: /aosp_15_r20/external/bcc/tools/dbstat_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of dbstat, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerdbstat traces queries performed by a MySQL or PostgreSQL database process, and
5*387f9dfdSAndroid Build Coastguard Workerdisplays a histogram of query latencies. For example:
6*387f9dfdSAndroid Build Coastguard Worker
7*387f9dfdSAndroid Build Coastguard Worker# dbstat mysql
8*387f9dfdSAndroid Build Coastguard WorkerTracing database queries for pids 25776 slower than 0 ms...
9*387f9dfdSAndroid Build Coastguard Worker     query latency (ms)  : count     distribution
10*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 990      |****************************************|
11*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 7        |                                        |
12*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
13*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
14*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
15*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
16*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
17*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
18*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
19*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
20*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 2        |                                        |
21*387f9dfdSAndroid Build Coastguard Worker^C
22*387f9dfdSAndroid Build Coastguard Worker
23*387f9dfdSAndroid Build Coastguard WorkerIt's immediately evident that the vast majority of queries finish very quickly,
24*387f9dfdSAndroid Build Coastguard Workerin under 1ms, but there are some super-slow queries occasionally, in the 1-2
25*387f9dfdSAndroid Build Coastguard Workerseconds bucket.
26*387f9dfdSAndroid Build Coastguard Worker
27*387f9dfdSAndroid Build Coastguard WorkerWe can filter out the shorter queries with the -m switch:
28*387f9dfdSAndroid Build Coastguard Worker
29*387f9dfdSAndroid Build Coastguard Worker# dbstat mysql -m 1000
30*387f9dfdSAndroid Build Coastguard WorkerTracing database queries for pids 25776 slower than 1000 ms...
31*387f9dfdSAndroid Build Coastguard Worker     query latency (ms)  : count     distribution
32*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
33*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
34*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
35*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
36*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
37*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
38*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
39*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
40*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
41*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
42*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 8        |****************************************|
43*387f9dfdSAndroid Build Coastguard Worker^C
44*387f9dfdSAndroid Build Coastguard Worker
45*387f9dfdSAndroid Build Coastguard WorkerBy default, dbstat will try to detect mysqld and postgres processes, but if
46*387f9dfdSAndroid Build Coastguard Workernecessary, you can specify the process ids with the -p switch. Here, the -i
47*387f9dfdSAndroid Build Coastguard Workerswitch is also used to request histograms at 3 second intervals:
48*387f9dfdSAndroid Build Coastguard Worker
49*387f9dfdSAndroid Build Coastguard Worker# dbstat mysql -p $(pidof mysql) -i 3
50*387f9dfdSAndroid Build Coastguard WorkerTracing database queries for pids 25776 slower than 0 ms...
51*387f9dfdSAndroid Build Coastguard Worker[06:14:36]
52*387f9dfdSAndroid Build Coastguard Worker     query latency (ms)  : count     distribution
53*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 758      |****************************************|
54*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 1        |                                        |
55*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
56*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
57*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
58*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
59*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
60*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
61*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
62*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
63*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 1        |                                        |
64*387f9dfdSAndroid Build Coastguard Worker
65*387f9dfdSAndroid Build Coastguard Worker[06:14:39]
66*387f9dfdSAndroid Build Coastguard Worker     query latency (ms)  : count     distribution
67*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 436      |****************************************|
68*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 2        |                                        |
69*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
70*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
71*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
72*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
73*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
74*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
75*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
76*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
77*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 1        |                                        |
78*387f9dfdSAndroid Build Coastguard Worker
79*387f9dfdSAndroid Build Coastguard Worker[06:14:42]
80*387f9dfdSAndroid Build Coastguard Worker     query latency (ms)  : count     distribution
81*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 399      |****************************************|
82*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
83*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
84*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
85*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
86*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
87*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
88*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
89*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
90*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
91*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 1        |                                        |
92*387f9dfdSAndroid Build Coastguard Worker^C
93*387f9dfdSAndroid Build Coastguard Worker
94*387f9dfdSAndroid Build Coastguard Worker
95*387f9dfdSAndroid Build Coastguard WorkerUSAGE:
96*387f9dfdSAndroid Build Coastguard Worker# dbstat -h
97*387f9dfdSAndroid Build Coastguard Workerusage: dbstat.py [-h] [-v] [-p [PID [PID ...]]] [-m THRESHOLD] [-u]
98*387f9dfdSAndroid Build Coastguard Worker                 [-i INTERVAL]
99*387f9dfdSAndroid Build Coastguard Worker                 {mysql,postgres}
100*387f9dfdSAndroid Build Coastguard Worker
101*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
102*387f9dfdSAndroid Build Coastguard Worker  {mysql,postgres}      the database engine to use
103*387f9dfdSAndroid Build Coastguard Worker
104*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
105*387f9dfdSAndroid Build Coastguard Worker  -h, --help            show this help message and exit
106*387f9dfdSAndroid Build Coastguard Worker  -v, --verbose         print the BPF program
107*387f9dfdSAndroid Build Coastguard Worker  -p [PID [PID ...]], --pid [PID [PID ...]]
108*387f9dfdSAndroid Build Coastguard Worker                        the pid(s) to trace
109*387f9dfdSAndroid Build Coastguard Worker  -m THRESHOLD, --threshold THRESHOLD
110*387f9dfdSAndroid Build Coastguard Worker                        trace queries slower than this threshold (ms)
111*387f9dfdSAndroid Build Coastguard Worker  -u, --microseconds    display query latencies in microseconds (default:
112*387f9dfdSAndroid Build Coastguard Worker                        milliseconds)
113*387f9dfdSAndroid Build Coastguard Worker  -i INTERVAL, --interval INTERVAL
114*387f9dfdSAndroid Build Coastguard Worker                        print summary at this interval (seconds)
115*387f9dfdSAndroid Build Coastguard Worker
116*387f9dfdSAndroid Build Coastguard Worker    dbstat postgres     # display a histogram of PostgreSQL query latencies
117*387f9dfdSAndroid Build Coastguard Worker    dbstat mysql -v     # display MySQL latencies and print the BPF program
118*387f9dfdSAndroid Build Coastguard Worker    dbstat mysql -u     # display query latencies in microseconds (default: ms)
119*387f9dfdSAndroid Build Coastguard Worker    dbstat mysql -m 5   # trace only queries slower than 5ms
120*387f9dfdSAndroid Build Coastguard Worker    dbstat mysql -p 408 # trace queries in a specific process
121