xref: /aosp_15_r20/external/bcc/tools/funcinterval_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of funcinterval, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard WorkereBPF/bcc is very suitable for platform performance tuning.
4*387f9dfdSAndroid Build Coastguard WorkerBy funclatency, we can profile specific functions to know how latency
5*387f9dfdSAndroid Build Coastguard Workerthis function costs. However, sometimes performance drop is not about the
6*387f9dfdSAndroid Build Coastguard Workerlatency of function but the interval between function calls.
7*387f9dfdSAndroid Build Coastguard Workerfuncinterval is born for this purpose.
8*387f9dfdSAndroid Build Coastguard Worker
9*387f9dfdSAndroid Build Coastguard WorkerAnother story, hardware performance tuning on the platform we will use
10*387f9dfdSAndroid Build Coastguard Workerprotocol analyzer to analyze performance, but most protocol analyzers lack
11*387f9dfdSAndroid Build Coastguard Workerthe distribution feature. Using a protocol analyzer you need a lot of time
12*387f9dfdSAndroid Build Coastguard Workerto check every detail latency. By funcinterval, we can save a lot of time
13*387f9dfdSAndroid Build Coastguard Workerby distribution feature.
14*387f9dfdSAndroid Build Coastguard Worker
15*387f9dfdSAndroid Build Coastguard WorkerFor example:
16*387f9dfdSAndroid Build Coastguard Worker
17*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval xhci_ring_ep_doorbell -d 2 -u
18*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "xhci_ring_ep_doorbell"... Hit Ctrl-C to end.
19*387f9dfdSAndroid Build Coastguard Worker
20*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
21*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
22*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
23*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
24*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
25*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
26*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 134      |                                        |
27*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 2862     |********************                    |
28*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 5552     |****************************************|
29*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 216      |*                                       |
30*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 2        |                                        |
31*387f9dfdSAndroid Build Coastguard WorkerDetaching...
32*387f9dfdSAndroid Build Coastguard Worker
33*387f9dfdSAndroid Build Coastguard WorkerThis example output shows that the interval latency of xhci_ring_ep_doorbell
34*387f9dfdSAndroid Build Coastguard Workertook between 64 and 255 microseconds. USB MAC will start its job after USB
35*387f9dfdSAndroid Build Coastguard Workerdoorbell register ringing, above information that can help hardware engineer to
36*387f9dfdSAndroid Build Coastguard Workeranalyze, the performance drop is because software rings the doorbell too
37*387f9dfdSAndroid Build Coastguard Workerlate or just slowly hardware DMA.
38*387f9dfdSAndroid Build Coastguard Worker
39*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval blk_start_request -i 2 -u
40*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "blk_start_request"... Hit Ctrl-C to end.
41*387f9dfdSAndroid Build Coastguard Worker
42*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
43*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
44*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
45*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
46*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 5        |*                                       |
47*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
48*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 1        |                                        |
49*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 2        |                                        |
50*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 1        |                                        |
51*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
52*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 1        |                                        |
53*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 1        |                                        |
54*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 117      |****************************************|
55*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 13       |****                                    |
56*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 1        |                                        |
57*387f9dfdSAndroid Build Coastguard Worker
58*387f9dfdSAndroid Build Coastguard WorkerIf using biolatency tool that has no difference between two platforms.
59*387f9dfdSAndroid Build Coastguard WorkerMaybe the problem is related to the interval time instead of block
60*387f9dfdSAndroid Build Coastguard Workerdevice I/O latency.
61*387f9dfdSAndroid Build Coastguard Worker
62*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval ion_ioctl -i 2 -m
63*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "ion_ioctl"... Hit Ctrl-C to end.
64*387f9dfdSAndroid Build Coastguard Worker
65*387f9dfdSAndroid Build Coastguard Worker     msecs               : count     distribution
66*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 215      |****************************************|
67*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
68*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 4        |                                        |
69*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 5        |                                        |
70*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 29       |*****                                   |
71*387f9dfdSAndroid Build Coastguard Worker
72*387f9dfdSAndroid Build Coastguard WorkerYou can also check the ion_ioctl. By the above output, we know the activity
73*387f9dfdSAndroid Build Coastguard Workerfrequency of ion_ioctl() is high mostly(less than 1 ms), but has 29 times low
74*387f9dfdSAndroid Build Coastguard Workerfrequency.
75*387f9dfdSAndroid Build Coastguard Worker
76*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval t:block:block_bio_queue -d 30 -u
77*387f9dfdSAndroid Build Coastguard WorkerTracing tracepoint for "block:block_bio_queue"... Hit Ctrl-C to end.
78*387f9dfdSAndroid Build Coastguard Worker
79*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
80*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
81*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
82*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
83*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 2        |                                        |
84*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 262      |                                        |
85*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 9075     |*******************                     |
86*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 18668    |****************************************|
87*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 1492     |***                                     |
88*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 2616     |*****                                   |
89*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 7226     |***************                         |
90*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 8982     |*******************                     |
91*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 2394     |*****                                   |
92*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 163      |                                        |
93*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 42       |                                        |
94*387f9dfdSAndroid Build Coastguard Worker     16384 -> 32767      : 2        |                                        |
95*387f9dfdSAndroid Build Coastguard Worker     32768 -> 65535      : 0        |                                        |
96*387f9dfdSAndroid Build Coastguard Worker     65536 -> 131071     : 0        |                                        |
97*387f9dfdSAndroid Build Coastguard Worker    131072 -> 262143     : 0        |                                        |
98*387f9dfdSAndroid Build Coastguard Worker    262144 -> 524287     : 0        |                                        |
99*387f9dfdSAndroid Build Coastguard Worker    524288 -> 1048575    : 1        |                                        |
100*387f9dfdSAndroid Build Coastguard WorkerDetaching...
101*387f9dfdSAndroid Build Coastguard Worker
102*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval t:block:block_rq_issue -d 30 -u
103*387f9dfdSAndroid Build Coastguard WorkerTracing tracepoint for "block:block_rq_issue"... Hit Ctrl-C to end.
104*387f9dfdSAndroid Build Coastguard Worker
105*387f9dfdSAndroid Build Coastguard Worker     usecs               : count     distribution
106*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
107*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
108*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
109*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
110*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 5        |                                        |
111*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 18       |                                        |
112*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 32       |                                        |
113*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 95       |                                        |
114*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 2194     |******                                  |
115*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 13830    |****************************************|
116*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 9001     |**************************              |
117*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 1569     |****                                    |
118*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 96       |                                        |
119*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 17       |                                        |
120*387f9dfdSAndroid Build Coastguard WorkerDetaching...
121*387f9dfdSAndroid Build Coastguard Worker
122*387f9dfdSAndroid Build Coastguard Workerfuncinterval also supports tracepoint filter. The above two cases are under EMMC
123*387f9dfdSAndroid Build Coastguard Workerthroughput testing, by those results you know which layer has a slower interval
124*387f9dfdSAndroid Build Coastguard Workertime. In our case, mmc-cmdqd is slower than block layer.
125*387f9dfdSAndroid Build Coastguard Worker
126*387f9dfdSAndroid Build Coastguard Worker
127*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval -p `pidof -s top` c:malloc -i 3
128*387f9dfdSAndroid Build Coastguard WorkerTracing uprobe function for "malloc"... Hit Ctrl-C to end.
129*387f9dfdSAndroid Build Coastguard Worker
130*387f9dfdSAndroid Build Coastguard Worker     nsecs               : count     distribution
131*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
132*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
133*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
134*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
135*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
136*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
137*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
138*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
139*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
140*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
141*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 0        |                                        |
142*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 0        |                                        |
143*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 7        |*************************               |
144*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 11       |****************************************|
145*387f9dfdSAndroid Build Coastguard Worker     16384 -> 32767      : 4        |**************                          |
146*387f9dfdSAndroid Build Coastguard Worker     32768 -> 65535      : 1        |***                                     |
147*387f9dfdSAndroid Build Coastguard Worker     65536 -> 131071     : 1        |***                                     |
148*387f9dfdSAndroid Build Coastguard Worker    131072 -> 262143     : 1        |***                                     |
149*387f9dfdSAndroid Build Coastguard Worker    262144 -> 524287     : 0        |                                        |
150*387f9dfdSAndroid Build Coastguard Worker    524288 -> 1048575    : 0        |                                        |
151*387f9dfdSAndroid Build Coastguard Worker   1048576 -> 2097151    : 0        |                                        |
152*387f9dfdSAndroid Build Coastguard Worker   2097152 -> 4194303    : 0        |                                        |
153*387f9dfdSAndroid Build Coastguard Worker   4194304 -> 8388607    : 1        |***                                     |
154*387f9dfdSAndroid Build Coastguard Worker
155*387f9dfdSAndroid Build Coastguard Worker
156*387f9dfdSAndroid Build Coastguard Worker     nsecs               : count     distribution
157*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
158*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
159*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
160*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
161*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
162*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
163*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
164*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
165*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
166*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
167*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 0        |                                        |
168*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 0        |                                        |
169*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 8        |********************************        |
170*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 10       |****************************************|
171*387f9dfdSAndroid Build Coastguard Worker     16384 -> 32767      : 4        |****************                        |
172*387f9dfdSAndroid Build Coastguard Worker     32768 -> 65535      : 1        |****                                    |
173*387f9dfdSAndroid Build Coastguard Worker     65536 -> 131071     : 1        |****                                    |
174*387f9dfdSAndroid Build Coastguard Worker    131072 -> 262143     : 1        |****                                    |
175*387f9dfdSAndroid Build Coastguard Worker    262144 -> 524287     : 0        |                                        |
176*387f9dfdSAndroid Build Coastguard Worker    524288 -> 1048575    : 0        |                                        |
177*387f9dfdSAndroid Build Coastguard Worker   1048576 -> 2097151    : 0        |                                        |
178*387f9dfdSAndroid Build Coastguard Worker   2097152 -> 4194303    : 0        |                                        |
179*387f9dfdSAndroid Build Coastguard Worker   4194304 -> 8388607    : 1        |****                                    |
180*387f9dfdSAndroid Build Coastguard Worker
181*387f9dfdSAndroid Build Coastguard WorkerTime the interval of libc's malloc for top utility every 3 seconds.
182*387f9dfdSAndroid Build Coastguard Worker
183*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval /usr/local/bin/python:main
184*387f9dfdSAndroid Build Coastguard WorkerTracing uprobe function for "main"... Hit Ctrl-C to end.
185*387f9dfdSAndroid Build Coastguard Worker^C
186*387f9dfdSAndroid Build Coastguard Worker     nsecs               : count     distribution
187*387f9dfdSAndroid Build Coastguard Worker         0 -> 1          : 0        |                                        |
188*387f9dfdSAndroid Build Coastguard Worker         2 -> 3          : 0        |                                        |
189*387f9dfdSAndroid Build Coastguard Worker         4 -> 7          : 0        |                                        |
190*387f9dfdSAndroid Build Coastguard Worker         8 -> 15         : 0        |                                        |
191*387f9dfdSAndroid Build Coastguard Worker        16 -> 31         : 0        |                                        |
192*387f9dfdSAndroid Build Coastguard Worker        32 -> 63         : 0        |                                        |
193*387f9dfdSAndroid Build Coastguard Worker        64 -> 127        : 0        |                                        |
194*387f9dfdSAndroid Build Coastguard Worker       128 -> 255        : 0        |                                        |
195*387f9dfdSAndroid Build Coastguard Worker       256 -> 511        : 0        |                                        |
196*387f9dfdSAndroid Build Coastguard Worker       512 -> 1023       : 0        |                                        |
197*387f9dfdSAndroid Build Coastguard Worker      1024 -> 2047       : 0        |                                        |
198*387f9dfdSAndroid Build Coastguard Worker      2048 -> 4095       : 0        |                                        |
199*387f9dfdSAndroid Build Coastguard Worker      4096 -> 8191       : 0        |                                        |
200*387f9dfdSAndroid Build Coastguard Worker      8192 -> 16383      : 0        |                                        |
201*387f9dfdSAndroid Build Coastguard Worker     16384 -> 32767      : 0        |                                        |
202*387f9dfdSAndroid Build Coastguard Worker     32768 -> 65535      : 0        |                                        |
203*387f9dfdSAndroid Build Coastguard Worker     65536 -> 131071     : 0        |                                        |
204*387f9dfdSAndroid Build Coastguard Worker    131072 -> 262143     : 0        |                                        |
205*387f9dfdSAndroid Build Coastguard Worker    262144 -> 524287     : 0        |                                        |
206*387f9dfdSAndroid Build Coastguard Worker    524288 -> 1048575    : 0        |                                        |
207*387f9dfdSAndroid Build Coastguard Worker   1048576 -> 2097151    : 0        |                                        |
208*387f9dfdSAndroid Build Coastguard Worker   2097152 -> 4194303    : 0        |                                        |
209*387f9dfdSAndroid Build Coastguard Worker   4194304 -> 8388607    : 0        |                                        |
210*387f9dfdSAndroid Build Coastguard Worker   8388608 -> 16777215   : 0        |                                        |
211*387f9dfdSAndroid Build Coastguard Worker  16777216 -> 33554431   : 0        |                                        |
212*387f9dfdSAndroid Build Coastguard Worker  33554432 -> 67108863   : 0        |                                        |
213*387f9dfdSAndroid Build Coastguard Worker  67108864 -> 134217727  : 0        |                                        |
214*387f9dfdSAndroid Build Coastguard Worker 134217728 -> 268435455  : 0        |                                        |
215*387f9dfdSAndroid Build Coastguard Worker 268435456 -> 536870911  : 1        |****************************************|
216*387f9dfdSAndroid Build Coastguard Worker 536870912 -> 1073741823 : 1        |****************************************|
217*387f9dfdSAndroid Build Coastguard Worker1073741824 -> 2147483647 : 1        |****************************************|
218*387f9dfdSAndroid Build Coastguard Worker2147483648 -> 4294967295 : 1        |****************************************|
219*387f9dfdSAndroid Build Coastguard WorkerDetaching...
220*387f9dfdSAndroid Build Coastguard Worker
221*387f9dfdSAndroid Build Coastguard WorkerTime the interal of python's main function.
222*387f9dfdSAndroid Build Coastguard Worker
223*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
224*387f9dfdSAndroid Build Coastguard Worker
225*387f9dfdSAndroid Build Coastguard Worker# ./funcinterval -h
226*387f9dfdSAndroid Build Coastguard Workerusage: funcinterval [-h] [-p PID] [-i INTERVAL] [-d DURATION] [-T] [-u] [-m]
227*387f9dfdSAndroid Build Coastguard Worker                    [-v]
228*387f9dfdSAndroid Build Coastguard Worker                    pattern
229*387f9dfdSAndroid Build Coastguard Worker
230*387f9dfdSAndroid Build Coastguard WorkerTime interval and print latency as a histogram
231*387f9dfdSAndroid Build Coastguard Worker
232*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
233*387f9dfdSAndroid Build Coastguard Worker  pattern             Function name for tracing
234*387f9dfdSAndroid Build Coastguard Worker
235*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
236*387f9dfdSAndroid Build Coastguard Worker  -h, --help            show this help message and exit
237*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID     trace this PID only
238*387f9dfdSAndroid Build Coastguard Worker  -i INTERVAL, --interval INTERVAL
239*387f9dfdSAndroid Build Coastguard Worker                        summary interval, in seconds
240*387f9dfdSAndroid Build Coastguard Worker  -d DURATION, --duration DURATION
241*387f9dfdSAndroid Build Coastguard Worker                        total duration of trace, in seconds
242*387f9dfdSAndroid Build Coastguard Worker  -T, --timestamp       include timestamp on output
243*387f9dfdSAndroid Build Coastguard Worker  -u, --microseconds    microsecond histogram
244*387f9dfdSAndroid Build Coastguard Worker  -m, --milliseconds    millisecond histogram
245*387f9dfdSAndroid Build Coastguard Worker  -v, --verbose         print the BPF program (for debugging purposes)
246*387f9dfdSAndroid Build Coastguard Worker
247*387f9dfdSAndroid Build Coastguard Workerexamples:
248*387f9dfdSAndroid Build Coastguard Worker    # time the interval of do_sys_open()
249*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval do_sys_open
250*387f9dfdSAndroid Build Coastguard Worker    # time the interval of xhci_ring_ep_doorbell(), in microseconds
251*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval -u xhci_ring_ep_doorbell
252*387f9dfdSAndroid Build Coastguard Worker    # time the interval of do_nanosleep(), in milliseconds
253*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval -m do_nanosleep
254*387f9dfdSAndroid Build Coastguard Worker    # output every 5 seconds, with timestamps
255*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval -mTi 5 vfs_read
256*387f9dfdSAndroid Build Coastguard Worker    # time process 181 only
257*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval -p 181 vfs_read
258*387f9dfdSAndroid Build Coastguard Worker    # time the interval of mm_vmscan_direct_reclaim_begin tracepoint
259*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval t:vmscan:mm_vmscan_direct_reclaim_begin
260*387f9dfdSAndroid Build Coastguard Worker    # time the interval of c:malloc used by top every 3 seconds
261*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval -p `pidof -s top` -i 3 c:malloc
262*387f9dfdSAndroid Build Coastguard Worker    # time /usr/local/bin/python main function
263*387f9dfdSAndroid Build Coastguard Worker    ./funcinterval /usr/local/bin/python:main
264