xref: /aosp_15_r20/external/bcc/tools/funccount_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of funccount, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard WorkerThis program traces functions, tracepoints, or USDT probes that match a
5*387f9dfdSAndroid Build Coastguard Workerspecified pattern, and when Ctrl-C is hit prints a summary of their count
6*387f9dfdSAndroid Build Coastguard Workerwhile tracing. Eg, tracing all kernel functions that begin with "vfs_":
7*387f9dfdSAndroid Build Coastguard Worker
8*387f9dfdSAndroid Build Coastguard Worker# ./funccount 'vfs_*'
9*387f9dfdSAndroid Build Coastguard WorkerTracing... Ctrl-C to end.
10*387f9dfdSAndroid Build Coastguard Worker^C
11*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
12*387f9dfdSAndroid Build Coastguard Workervfs_create                        1
13*387f9dfdSAndroid Build Coastguard Workervfs_rename                        1
14*387f9dfdSAndroid Build Coastguard Workervfs_fsync_range                   2
15*387f9dfdSAndroid Build Coastguard Workervfs_lock_file                    30
16*387f9dfdSAndroid Build Coastguard Workervfs_fstatat                     152
17*387f9dfdSAndroid Build Coastguard Workervfs_fstat                       154
18*387f9dfdSAndroid Build Coastguard Workervfs_write                       166
19*387f9dfdSAndroid Build Coastguard Workervfs_getattr_nosec               262
20*387f9dfdSAndroid Build Coastguard Workervfs_getattr                     262
21*387f9dfdSAndroid Build Coastguard Workervfs_open                        264
22*387f9dfdSAndroid Build Coastguard Workervfs_read                        470
23*387f9dfdSAndroid Build Coastguard WorkerDetaching...
24*387f9dfdSAndroid Build Coastguard Worker
25*387f9dfdSAndroid Build Coastguard WorkerThe above output shows that while tracing the vfs_read() function was called 470
26*387f9dfdSAndroid Build Coastguard Workertimes, and vfs_open() 264 times, etc.
27*387f9dfdSAndroid Build Coastguard Worker
28*387f9dfdSAndroid Build Coastguard WorkerThis is useful for exploring kernel code, to figure out which functions are in
29*387f9dfdSAndroid Build Coastguard Workeruse and which are not. This can narrow down an investigation to just a few
30*387f9dfdSAndroid Build Coastguard Workerfunctions, whose counts are similar to the workload investigated.
31*387f9dfdSAndroid Build Coastguard Worker
32*387f9dfdSAndroid Build Coastguard Worker
33*387f9dfdSAndroid Build Coastguard WorkerTracing all tcp functions:
34*387f9dfdSAndroid Build Coastguard Worker
35*387f9dfdSAndroid Build Coastguard Worker# ./funccount 'tcp_*'
36*387f9dfdSAndroid Build Coastguard WorkerTracing... Ctrl-C to end.
37*387f9dfdSAndroid Build Coastguard Worker^C
38*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
39*387f9dfdSAndroid Build Coastguard Workertcp_try_undo_recovery             1
40*387f9dfdSAndroid Build Coastguard Workertcp_twsk_destructor               1
41*387f9dfdSAndroid Build Coastguard Workertcp_enter_recovery                1
42*387f9dfdSAndroid Build Coastguard Workertcp_xmit_retransmit_queue         1
43*387f9dfdSAndroid Build Coastguard Workertcp_update_scoreboard             1
44*387f9dfdSAndroid Build Coastguard Workertcp_verify_retransmit_hint        1
45*387f9dfdSAndroid Build Coastguard Workertcp_tsq_handler.part.31           1
46*387f9dfdSAndroid Build Coastguard Workertcp_sacktag_write_queue           1
47*387f9dfdSAndroid Build Coastguard Workertcp_match_skb_to_sack             1
48*387f9dfdSAndroid Build Coastguard Workertcp_time_wait                     1
49*387f9dfdSAndroid Build Coastguard Workertcp_mark_head_lost                1
50*387f9dfdSAndroid Build Coastguard Workertcp_init_cwnd_reduction           1
51*387f9dfdSAndroid Build Coastguard Workertcp_sacktag_one                   1
52*387f9dfdSAndroid Build Coastguard Workertcp_sacktag_walk                  1
53*387f9dfdSAndroid Build Coastguard Workertcp_retransmit_skb                1
54*387f9dfdSAndroid Build Coastguard Workertcp_tasklet_func                  1
55*387f9dfdSAndroid Build Coastguard Workertcp_resume_early_retransmit       1
56*387f9dfdSAndroid Build Coastguard Workertcp_dsack_set                     1
57*387f9dfdSAndroid Build Coastguard Workertcp_v4_syn_recv_sock              2
58*387f9dfdSAndroid Build Coastguard Workertcp_ca_openreq_child              2
59*387f9dfdSAndroid Build Coastguard Workertcp_try_fastopen                  2
60*387f9dfdSAndroid Build Coastguard Workertcp_openreq_init_rwin             2
61*387f9dfdSAndroid Build Coastguard Workertcp_v4_init_req                   2
62*387f9dfdSAndroid Build Coastguard Workertcp_create_openreq_child          2
63*387f9dfdSAndroid Build Coastguard Workertcp_v4_send_synack                2
64*387f9dfdSAndroid Build Coastguard Workertcp_v4_init_sequence              2
65*387f9dfdSAndroid Build Coastguard Workertcp_fragment                      2
66*387f9dfdSAndroid Build Coastguard Workertcp_v4_conn_request               2
67*387f9dfdSAndroid Build Coastguard Workertcp_conn_request                  2
68*387f9dfdSAndroid Build Coastguard Workertcp_v4_route_req                  2
69*387f9dfdSAndroid Build Coastguard Workertcp_fragment_tstamp               2
70*387f9dfdSAndroid Build Coastguard Workertcp_try_keep_open                 2
71*387f9dfdSAndroid Build Coastguard Workertcp_v4_reqsk_destructor           2
72*387f9dfdSAndroid Build Coastguard Workertcp_may_send_now                  2
73*387f9dfdSAndroid Build Coastguard Workertcp_make_synack                   2
74*387f9dfdSAndroid Build Coastguard Workertcp_child_process                 2
75*387f9dfdSAndroid Build Coastguard Workertcp_check_req                     2
76*387f9dfdSAndroid Build Coastguard Workertcp_fastretrans_alert             2
77*387f9dfdSAndroid Build Coastguard Workertcp_set_keepalive                 2
78*387f9dfdSAndroid Build Coastguard Workertcp_finish_connect                3
79*387f9dfdSAndroid Build Coastguard Workertcp_connect_queue_skb             3
80*387f9dfdSAndroid Build Coastguard Workertcp_v4_connect                    3
81*387f9dfdSAndroid Build Coastguard Workertcp_init_sock                     3
82*387f9dfdSAndroid Build Coastguard Workertcp_v4_init_sock                  3
83*387f9dfdSAndroid Build Coastguard Workertcp_connect                       3
84*387f9dfdSAndroid Build Coastguard Workertcp_any_retrans_done.part.35        3
85*387f9dfdSAndroid Build Coastguard Workertcp_clear_retrans                 3
86*387f9dfdSAndroid Build Coastguard Workertcp_setsockopt                    4
87*387f9dfdSAndroid Build Coastguard Workertcp_update_metrics                5
88*387f9dfdSAndroid Build Coastguard Workertcp_done                          5
89*387f9dfdSAndroid Build Coastguard Workertcp_initialize_rcv_mss            5
90*387f9dfdSAndroid Build Coastguard Workertcp_sndbuf_expand                 5
91*387f9dfdSAndroid Build Coastguard Workertcp_fin                           5
92*387f9dfdSAndroid Build Coastguard Workertcp_init_xmit_timers              5
93*387f9dfdSAndroid Build Coastguard Workertcp_close                         5
94*387f9dfdSAndroid Build Coastguard Workertcp_init_congestion_control        5
95*387f9dfdSAndroid Build Coastguard Workertcp_init_metrics                  5
96*387f9dfdSAndroid Build Coastguard Workertcp_gro_complete                  5
97*387f9dfdSAndroid Build Coastguard Workertcp_free_fastopen_req             5
98*387f9dfdSAndroid Build Coastguard Workertcp_v4_destroy_sock               5
99*387f9dfdSAndroid Build Coastguard Workertcp_cleanup_congestion_control        5
100*387f9dfdSAndroid Build Coastguard Workertcp_send_fin                      5
101*387f9dfdSAndroid Build Coastguard Workertcp_init_buffer_space             5
102*387f9dfdSAndroid Build Coastguard Workertcp_init_cwnd                     5
103*387f9dfdSAndroid Build Coastguard Workertcp_select_initial_window         5
104*387f9dfdSAndroid Build Coastguard Workertcp_check_oom                     5
105*387f9dfdSAndroid Build Coastguard Workertcp_default_init_rwnd             5
106*387f9dfdSAndroid Build Coastguard Workertcp_assign_congestion_control        5
107*387f9dfdSAndroid Build Coastguard Workertcp_getsockopt                    6
108*387f9dfdSAndroid Build Coastguard Workertcp_ioctl                         6
109*387f9dfdSAndroid Build Coastguard Workertcp_mtup_init                     8
110*387f9dfdSAndroid Build Coastguard Workertcp_parse_options                 8
111*387f9dfdSAndroid Build Coastguard Workertcp_mss_to_mtu                    8
112*387f9dfdSAndroid Build Coastguard Workertcp_try_rmem_schedule             8
113*387f9dfdSAndroid Build Coastguard Workertcp_get_metrics                  10
114*387f9dfdSAndroid Build Coastguard Workertcp_try_coalesce                 10
115*387f9dfdSAndroid Build Coastguard Workertcp_rcv_state_process            14
116*387f9dfdSAndroid Build Coastguard Workertcp_sync_mss                     14
117*387f9dfdSAndroid Build Coastguard Workertcp_write_timer_handler          15
118*387f9dfdSAndroid Build Coastguard Workertcp_write_timer                  16
119*387f9dfdSAndroid Build Coastguard Workertcp_grow_window.isra.27          22
120*387f9dfdSAndroid Build Coastguard Workertcp_set_state                    23
121*387f9dfdSAndroid Build Coastguard Workertcp_send_ack                     37
122*387f9dfdSAndroid Build Coastguard Workertcp_delack_timer                 42
123*387f9dfdSAndroid Build Coastguard Workertcp_delack_timer_handler         42
124*387f9dfdSAndroid Build Coastguard Workertcp_validate_incoming            91
125*387f9dfdSAndroid Build Coastguard Workertcp_prequeue_process            112
126*387f9dfdSAndroid Build Coastguard Workertcp_v4_early_demux              117
127*387f9dfdSAndroid Build Coastguard Workertcp_gro_receive                 146
128*387f9dfdSAndroid Build Coastguard Workertcp_queue_rcv                   167
129*387f9dfdSAndroid Build Coastguard Workertcp_data_queue                  215
130*387f9dfdSAndroid Build Coastguard Workertcp_urg                         219
131*387f9dfdSAndroid Build Coastguard Workertcp_send_delayed_ack            257
132*387f9dfdSAndroid Build Coastguard Workertcp_send_mss                    275
133*387f9dfdSAndroid Build Coastguard Workertcp_push                        275
134*387f9dfdSAndroid Build Coastguard Workertcp_sendmsg                     275
135*387f9dfdSAndroid Build Coastguard Workertcp_event_data_recv             275
136*387f9dfdSAndroid Build Coastguard Workertcp_nagle_check                 279
137*387f9dfdSAndroid Build Coastguard Workertcp_write_xmit                  282
138*387f9dfdSAndroid Build Coastguard Workertcp_event_new_data_sent         282
139*387f9dfdSAndroid Build Coastguard Workertcp_current_mss                 284
140*387f9dfdSAndroid Build Coastguard Workertcp_init_tso_segs               284
141*387f9dfdSAndroid Build Coastguard Workertcp_wfree                       286
142*387f9dfdSAndroid Build Coastguard Workertcp_schedule_loss_probe         305
143*387f9dfdSAndroid Build Coastguard Workertcp_v4_send_check               323
144*387f9dfdSAndroid Build Coastguard Workertcp_transmit_skb                323
145*387f9dfdSAndroid Build Coastguard Workertcp_recvmsg                     323
146*387f9dfdSAndroid Build Coastguard Workertcp_options_write               325
147*387f9dfdSAndroid Build Coastguard Workertcp_rcv_space_adjust            328
148*387f9dfdSAndroid Build Coastguard Workertcp_check_space                 332
149*387f9dfdSAndroid Build Coastguard Workertcp_rcv_established             337
150*387f9dfdSAndroid Build Coastguard Workertcp_ack                         337
151*387f9dfdSAndroid Build Coastguard Workertcp_parse_aligned_timestamp.part.43      345
152*387f9dfdSAndroid Build Coastguard Workertcp_prequeue                    346
153*387f9dfdSAndroid Build Coastguard Workertcp_v4_do_rcv                   351
154*387f9dfdSAndroid Build Coastguard Workertcp_v4_rcv                      351
155*387f9dfdSAndroid Build Coastguard Workertcp_parse_md5sig_option         351
156*387f9dfdSAndroid Build Coastguard Workertcp_cleanup_rbuf                436
157*387f9dfdSAndroid Build Coastguard Workertcp_poll                        468
158*387f9dfdSAndroid Build Coastguard Workertcp_established_options         604
159*387f9dfdSAndroid Build Coastguard Workertcp_v4_md5_lookup               615
160*387f9dfdSAndroid Build Coastguard Workertcp_release_cb                  736
161*387f9dfdSAndroid Build Coastguard Workertcp_rearm_rto                   843
162*387f9dfdSAndroid Build Coastguard Workertcp_md5_do_lookup               968
163*387f9dfdSAndroid Build Coastguard WorkerDetaching...
164*387f9dfdSAndroid Build Coastguard Worker
165*387f9dfdSAndroid Build Coastguard WorkerThe current implementation can take many seconds to detach from tracing, after
166*387f9dfdSAndroid Build Coastguard WorkerCtrl-C has been hit.
167*387f9dfdSAndroid Build Coastguard Worker
168*387f9dfdSAndroid Build Coastguard Worker
169*387f9dfdSAndroid Build Coastguard WorkerUser functions can be traced in executables or libraries, and per-process
170*387f9dfdSAndroid Build Coastguard Workerfiltering is allowed:
171*387f9dfdSAndroid Build Coastguard Worker
172*387f9dfdSAndroid Build Coastguard Worker# ./funccount -p 1442 /home/ubuntu/contentions:*
173*387f9dfdSAndroid Build Coastguard WorkerTracing 15 functions for "/home/ubuntu/contentions:*"... Hit Ctrl-C to end.
174*387f9dfdSAndroid Build Coastguard Worker^C
175*387f9dfdSAndroid Build Coastguard WorkerFUNC                                           COUNT
176*387f9dfdSAndroid Build Coastguard Workermain                                               1
177*387f9dfdSAndroid Build Coastguard Worker_start                                             1
178*387f9dfdSAndroid Build Coastguard Workerprimes_thread                                      2
179*387f9dfdSAndroid Build Coastguard Workerinsert_result                                  87186
180*387f9dfdSAndroid Build Coastguard Workeris_prime                                     1252772
181*387f9dfdSAndroid Build Coastguard WorkerDetaching...
182*387f9dfdSAndroid Build Coastguard Worker
183*387f9dfdSAndroid Build Coastguard WorkerIf /home/ubuntu is in the $PATH, then the following command will also work:
184*387f9dfdSAndroid Build Coastguard Worker
185*387f9dfdSAndroid Build Coastguard Worker# ./funccount -p 1442 contentions:*
186*387f9dfdSAndroid Build Coastguard Worker
187*387f9dfdSAndroid Build Coastguard Worker
188*387f9dfdSAndroid Build Coastguard WorkerCounting libc write and read calls using regular expression syntax (-r):
189*387f9dfdSAndroid Build Coastguard Worker
190*387f9dfdSAndroid Build Coastguard Worker# ./funccount -r 'c:(write|read)$'
191*387f9dfdSAndroid Build Coastguard WorkerTracing 2 functions for "c:(write|read)$"... Hit Ctrl-C to end.
192*387f9dfdSAndroid Build Coastguard Worker^C
193*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
194*387f9dfdSAndroid Build Coastguard Workerread                                        2
195*387f9dfdSAndroid Build Coastguard Workerwrite                                       4
196*387f9dfdSAndroid Build Coastguard WorkerDetaching...
197*387f9dfdSAndroid Build Coastguard Worker
198*387f9dfdSAndroid Build Coastguard Worker
199*387f9dfdSAndroid Build Coastguard WorkerKernel tracepoints are also available as targets. For example, trace common
200*387f9dfdSAndroid Build Coastguard Workerblock I/O tracepoints and see how often they are invoked:
201*387f9dfdSAndroid Build Coastguard Worker
202*387f9dfdSAndroid Build Coastguard Worker# ./funccount t:block:*
203*387f9dfdSAndroid Build Coastguard WorkerTracing 19 functions for "t:block:*"... Hit Ctrl-C to end.
204*387f9dfdSAndroid Build Coastguard Worker^C
205*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
206*387f9dfdSAndroid Build Coastguard Workerblock:block_rq_complete                     7
207*387f9dfdSAndroid Build Coastguard Workerblock:block_rq_issue                        7
208*387f9dfdSAndroid Build Coastguard Workerblock:block_getrq                           7
209*387f9dfdSAndroid Build Coastguard Workerblock:block_rq_insert                       7
210*387f9dfdSAndroid Build Coastguard WorkerDetaching...
211*387f9dfdSAndroid Build Coastguard Worker
212*387f9dfdSAndroid Build Coastguard Worker
213*387f9dfdSAndroid Build Coastguard WorkerLikewise, user-mode statically defined traces (USDT) can also be probed. For
214*387f9dfdSAndroid Build Coastguard Workerexample, count mutex-related events in pthreads:
215*387f9dfdSAndroid Build Coastguard Worker
216*387f9dfdSAndroid Build Coastguard Worker# ./funccount u:pthread:*mutex* -p 1442
217*387f9dfdSAndroid Build Coastguard WorkerTracing 7 functions for "u:pthread:*mutex*"... Hit Ctrl-C to end.
218*387f9dfdSAndroid Build Coastguard Worker^C
219*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
220*387f9dfdSAndroid Build Coastguard Workermutex_init                                  1
221*387f9dfdSAndroid Build Coastguard Workermutex_entry                            547122
222*387f9dfdSAndroid Build Coastguard Workermutex_acquired                         547175
223*387f9dfdSAndroid Build Coastguard Workermutex_release                          547185
224*387f9dfdSAndroid Build Coastguard WorkerDetaching...
225*387f9dfdSAndroid Build Coastguard Worker
226*387f9dfdSAndroid Build Coastguard Worker
227*387f9dfdSAndroid Build Coastguard WorkerAn interval can be provided. Eg, printing output every 1 second for vfs calls:
228*387f9dfdSAndroid Build Coastguard Worker
229*387f9dfdSAndroid Build Coastguard Worker# ./funccount -i 1 'vfs_*'
230*387f9dfdSAndroid Build Coastguard WorkerTracing... Ctrl-C to end.
231*387f9dfdSAndroid Build Coastguard Worker
232*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
233*387f9dfdSAndroid Build Coastguard Workervfs_fstatat                       1
234*387f9dfdSAndroid Build Coastguard Workervfs_fstat                        16
235*387f9dfdSAndroid Build Coastguard Workervfs_getattr_nosec                17
236*387f9dfdSAndroid Build Coastguard Workervfs_getattr                      17
237*387f9dfdSAndroid Build Coastguard Workervfs_write                        52
238*387f9dfdSAndroid Build Coastguard Workervfs_read                         79
239*387f9dfdSAndroid Build Coastguard Workervfs_open                         98
240*387f9dfdSAndroid Build Coastguard Worker
241*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
242*387f9dfdSAndroid Build Coastguard Workervfs_fstatat                      10
243*387f9dfdSAndroid Build Coastguard Workervfs_fstat                        10
244*387f9dfdSAndroid Build Coastguard Workervfs_open                         13
245*387f9dfdSAndroid Build Coastguard Workervfs_getattr_nosec                20
246*387f9dfdSAndroid Build Coastguard Workervfs_getattr                      20
247*387f9dfdSAndroid Build Coastguard Workervfs_write                        28
248*387f9dfdSAndroid Build Coastguard Workervfs_read                         39
249*387f9dfdSAndroid Build Coastguard Worker
250*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
251*387f9dfdSAndroid Build Coastguard Workervfs_fsync_range                   2
252*387f9dfdSAndroid Build Coastguard Workervfs_lock_file                    30
253*387f9dfdSAndroid Build Coastguard Workervfs_write                       107
254*387f9dfdSAndroid Build Coastguard Workervfs_fstatat                     129
255*387f9dfdSAndroid Build Coastguard Workervfs_fstat                       130
256*387f9dfdSAndroid Build Coastguard Workervfs_open                        154
257*387f9dfdSAndroid Build Coastguard Workervfs_getattr_nosec               222
258*387f9dfdSAndroid Build Coastguard Workervfs_getattr                     222
259*387f9dfdSAndroid Build Coastguard Workervfs_read                        384
260*387f9dfdSAndroid Build Coastguard Worker^C
261*387f9dfdSAndroid Build Coastguard WorkerDetaching...
262*387f9dfdSAndroid Build Coastguard Worker
263*387f9dfdSAndroid Build Coastguard WorkerThis can be useful for making some ad hoc tools, exposing new counts of
264*387f9dfdSAndroid Build Coastguard Workerkernel activity that aren't visible in other metrics.
265*387f9dfdSAndroid Build Coastguard Worker
266*387f9dfdSAndroid Build Coastguard WorkerInclude -T to print timestamps on output.
267*387f9dfdSAndroid Build Coastguard Worker
268*387f9dfdSAndroid Build Coastguard Worker
269*387f9dfdSAndroid Build Coastguard WorkerA maximum duration can be set. For example, to print 5 x 1 second summaries
270*387f9dfdSAndroid Build Coastguard Workerof vfs_read() calls:
271*387f9dfdSAndroid Build Coastguard Worker
272*387f9dfdSAndroid Build Coastguard Worker# ./funccount -i 1 -d 5 vfs_read
273*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "vfs_read"... Hit Ctrl-C to end.
274*387f9dfdSAndroid Build Coastguard Worker
275*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
276*387f9dfdSAndroid Build Coastguard Workervfs_read                                   30
277*387f9dfdSAndroid Build Coastguard Worker
278*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
279*387f9dfdSAndroid Build Coastguard Workervfs_read                                   26
280*387f9dfdSAndroid Build Coastguard Worker
281*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
282*387f9dfdSAndroid Build Coastguard Workervfs_read                                   54
283*387f9dfdSAndroid Build Coastguard Worker
284*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
285*387f9dfdSAndroid Build Coastguard Workervfs_read                                   25
286*387f9dfdSAndroid Build Coastguard Worker
287*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
288*387f9dfdSAndroid Build Coastguard Workervfs_read                                   31
289*387f9dfdSAndroid Build Coastguard WorkerDetaching...
290*387f9dfdSAndroid Build Coastguard Worker
291*387f9dfdSAndroid Build Coastguard WorkerBy leaving off the "-i 1", this will print a single 5 second summary:
292*387f9dfdSAndroid Build Coastguard Worker
293*387f9dfdSAndroid Build Coastguard Worker# funccount.py -d 5 vfs_read
294*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "vfs_read"... Hit Ctrl-C to end.
295*387f9dfdSAndroid Build Coastguard Worker
296*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
297*387f9dfdSAndroid Build Coastguard Workervfs_read                                  167
298*387f9dfdSAndroid Build Coastguard WorkerDetaching...
299*387f9dfdSAndroid Build Coastguard Worker
300*387f9dfdSAndroid Build Coastguard WorkerThis can be useful for finding out rates: trace all functions for ten seconds
301*387f9dfdSAndroid Build Coastguard Workerand then divide by ten for the per-second rate.
302*387f9dfdSAndroid Build Coastguard Worker
303*387f9dfdSAndroid Build Coastguard Worker
304*387f9dfdSAndroid Build Coastguard WorkerThe "*" wildcard can be used multiple times. Eg, matching functions that contain
305*387f9dfdSAndroid Build Coastguard Workerthe word "readdir":
306*387f9dfdSAndroid Build Coastguard Worker
307*387f9dfdSAndroid Build Coastguard Worker# ./funccount '*readdir*'
308*387f9dfdSAndroid Build Coastguard WorkerTracing... Ctrl-C to end.
309*387f9dfdSAndroid Build Coastguard Worker^C
310*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
311*387f9dfdSAndroid Build Coastguard Workerext4_readdir                      4
312*387f9dfdSAndroid Build Coastguard WorkerDetaching...
313*387f9dfdSAndroid Build Coastguard Worker
314*387f9dfdSAndroid Build Coastguard WorkerMatching "tcp" then "send":
315*387f9dfdSAndroid Build Coastguard Worker
316*387f9dfdSAndroid Build Coastguard Worker# ./funccount '*tcp*send*'
317*387f9dfdSAndroid Build Coastguard WorkerTracing... Ctrl-C to end.
318*387f9dfdSAndroid Build Coastguard Worker^C
319*387f9dfdSAndroid Build Coastguard WorkerFUNC                          COUNT
320*387f9dfdSAndroid Build Coastguard Workertcp_send_ack                      4
321*387f9dfdSAndroid Build Coastguard Workertcp_send_delayed_ack             19
322*387f9dfdSAndroid Build Coastguard Workertcp_send_mss                     26
323*387f9dfdSAndroid Build Coastguard Workertcp_sendmsg                      26
324*387f9dfdSAndroid Build Coastguard Workertcp_v4_send_check                30
325*387f9dfdSAndroid Build Coastguard Worker__tcp_v4_send_check              30
326*387f9dfdSAndroid Build Coastguard WorkerDetaching...
327*387f9dfdSAndroid Build Coastguard Worker
328*387f9dfdSAndroid Build Coastguard WorkerA cpu is specified by "-c CPU", this will only trace the specified CPU. Eg,
329*387f9dfdSAndroid Build Coastguard Workertrace how many timers setting per second of CPU 1 on a x86(Intel) server:
330*387f9dfdSAndroid Build Coastguard Worker
331*387f9dfdSAndroid Build Coastguard Worker# funccount.py -i 1 -c 1 lapic_next_deadline
332*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "lapic_next_deadline"... Hit Ctrl-C to end.
333*387f9dfdSAndroid Build Coastguard Worker
334*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
335*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      3840
336*387f9dfdSAndroid Build Coastguard Worker
337*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
338*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      3930
339*387f9dfdSAndroid Build Coastguard Worker
340*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
341*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      4701
342*387f9dfdSAndroid Build Coastguard Worker
343*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
344*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      5895
345*387f9dfdSAndroid Build Coastguard Worker
346*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
347*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      5591
348*387f9dfdSAndroid Build Coastguard Worker
349*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
350*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      4727
351*387f9dfdSAndroid Build Coastguard Worker
352*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
353*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      5560
354*387f9dfdSAndroid Build Coastguard Worker
355*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
356*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                      5416
357*387f9dfdSAndroid Build Coastguard Worker^C
358*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
359*387f9dfdSAndroid Build Coastguard Workerlapic_next_deadline                       372
360*387f9dfdSAndroid Build Coastguard WorkerDetaching...
361*387f9dfdSAndroid Build Coastguard Worker
362*387f9dfdSAndroid Build Coastguard WorkerFull USAGE:
363*387f9dfdSAndroid Build Coastguard Worker
364*387f9dfdSAndroid Build Coastguard Worker# ./funccount -h
365*387f9dfdSAndroid Build Coastguard Workerusage: funccount.py [-h] [-p PID] [-i INTERVAL] [-d DURATION] [-T] [-r] [-D]
366*387f9dfdSAndroid Build Coastguard Worker                    [-c CPU]
367*387f9dfdSAndroid Build Coastguard Worker                    pattern
368*387f9dfdSAndroid Build Coastguard Worker
369*387f9dfdSAndroid Build Coastguard WorkerCount functions, tracepoints, and USDT probes
370*387f9dfdSAndroid Build Coastguard Worker
371*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
372*387f9dfdSAndroid Build Coastguard Worker  pattern               search expression for events
373*387f9dfdSAndroid Build Coastguard Worker
374*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
375*387f9dfdSAndroid Build Coastguard Worker  -h, --help            show this help message and exit
376*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID     trace this PID only
377*387f9dfdSAndroid Build Coastguard Worker  -i INTERVAL, --interval INTERVAL
378*387f9dfdSAndroid Build Coastguard Worker                        summary interval, seconds
379*387f9dfdSAndroid Build Coastguard Worker  -d DURATION, --duration DURATION
380*387f9dfdSAndroid Build Coastguard Worker                        total duration of trace, seconds
381*387f9dfdSAndroid Build Coastguard Worker  -T, --timestamp       include timestamp on output
382*387f9dfdSAndroid Build Coastguard Worker  -r, --regexp          use regular expressions. Default is "*" wildcards
383*387f9dfdSAndroid Build Coastguard Worker                        only.
384*387f9dfdSAndroid Build Coastguard Worker  -D, --debug           print BPF program before starting (for debugging
385*387f9dfdSAndroid Build Coastguard Worker                        purposes)
386*387f9dfdSAndroid Build Coastguard Worker  -c CPU, --cpu CPU     trace this CPU only
387*387f9dfdSAndroid Build Coastguard Worker
388*387f9dfdSAndroid Build Coastguard Workerexamples:
389*387f9dfdSAndroid Build Coastguard Worker    ./funccount 'vfs_*'             # count kernel fns starting with "vfs"
390*387f9dfdSAndroid Build Coastguard Worker    ./funccount -r '^vfs.*'         # same as above, using regular expressions
391*387f9dfdSAndroid Build Coastguard Worker    ./funccount -Ti 5 'vfs_*'       # output every 5 seconds, with timestamps
392*387f9dfdSAndroid Build Coastguard Worker    ./funccount -d 10 'vfs_*'       # trace for 10 seconds only
393*387f9dfdSAndroid Build Coastguard Worker    ./funccount -p 185 'vfs_*'      # count vfs calls for PID 181 only
394*387f9dfdSAndroid Build Coastguard Worker    ./funccount t:sched:sched_fork  # count calls to the sched_fork tracepoint
395*387f9dfdSAndroid Build Coastguard Worker    ./funccount -p 185 u:node:gc*   # count all GC USDT probes in node, PID 185
396*387f9dfdSAndroid Build Coastguard Worker    ./funccount c:malloc            # count all malloc() calls in libc
397*387f9dfdSAndroid Build Coastguard Worker    ./funccount go:os.*             # count all "os.*" calls in libgo
398*387f9dfdSAndroid Build Coastguard Worker    ./funccount -p 185 go:os.*      # count all "os.*" calls in libgo, PID 185
399*387f9dfdSAndroid Build Coastguard Worker    ./funccount ./test:read*        # count "read*" calls in the ./test binary
400*387f9dfdSAndroid Build Coastguard Worker    ./funccount -c 1 'vfs_*'        # count vfs calls on CPU 1 only
401