xref: /aosp_15_r20/external/bcc/tools/stackcount_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of stackcount, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard WorkerThis program traces functions and frequency counts them with their entire
5*387f9dfdSAndroid Build Coastguard Workerstack trace, summarized in-kernel for efficiency. For example, counting
6*387f9dfdSAndroid Build Coastguard Workerstack traces that led to the submit_bio() kernel function, which creates
7*387f9dfdSAndroid Build Coastguard Workerblock device I/O:
8*387f9dfdSAndroid Build Coastguard Worker
9*387f9dfdSAndroid Build Coastguard Worker# ./stackcount submit_bio
10*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "submit_bio"... Hit Ctrl-C to end.
11*387f9dfdSAndroid Build Coastguard Worker^C
12*387f9dfdSAndroid Build Coastguard Worker  submit_bio
13*387f9dfdSAndroid Build Coastguard Worker  submit_bh
14*387f9dfdSAndroid Build Coastguard Worker  journal_submit_commit_record.isra.13
15*387f9dfdSAndroid Build Coastguard Worker  jbd2_journal_commit_transaction
16*387f9dfdSAndroid Build Coastguard Worker  kjournald2
17*387f9dfdSAndroid Build Coastguard Worker  kthread
18*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
19*387f9dfdSAndroid Build Coastguard Worker  mb_cache_list
20*387f9dfdSAndroid Build Coastguard Worker    1
21*387f9dfdSAndroid Build Coastguard Worker
22*387f9dfdSAndroid Build Coastguard Worker  submit_bio
23*387f9dfdSAndroid Build Coastguard Worker  __block_write_full_page.constprop.39
24*387f9dfdSAndroid Build Coastguard Worker  block_write_full_page
25*387f9dfdSAndroid Build Coastguard Worker  blkdev_writepage
26*387f9dfdSAndroid Build Coastguard Worker  __writepage
27*387f9dfdSAndroid Build Coastguard Worker  write_cache_pages
28*387f9dfdSAndroid Build Coastguard Worker  generic_writepages
29*387f9dfdSAndroid Build Coastguard Worker  do_writepages
30*387f9dfdSAndroid Build Coastguard Worker  __writeback_single_inode
31*387f9dfdSAndroid Build Coastguard Worker  writeback_sb_inodes
32*387f9dfdSAndroid Build Coastguard Worker  __writeback_inodes_wb
33*387f9dfdSAndroid Build Coastguard Worker    2
34*387f9dfdSAndroid Build Coastguard Worker
35*387f9dfdSAndroid Build Coastguard Worker  submit_bio
36*387f9dfdSAndroid Build Coastguard Worker  __block_write_full_page.constprop.39
37*387f9dfdSAndroid Build Coastguard Worker  block_write_full_page
38*387f9dfdSAndroid Build Coastguard Worker  blkdev_writepage
39*387f9dfdSAndroid Build Coastguard Worker  __writepage
40*387f9dfdSAndroid Build Coastguard Worker  write_cache_pages
41*387f9dfdSAndroid Build Coastguard Worker  generic_writepages
42*387f9dfdSAndroid Build Coastguard Worker  do_writepages
43*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
44*387f9dfdSAndroid Build Coastguard Worker  filemap_fdatawrite
45*387f9dfdSAndroid Build Coastguard Worker  fdatawrite_one_bdev
46*387f9dfdSAndroid Build Coastguard Worker    36
47*387f9dfdSAndroid Build Coastguard Worker
48*387f9dfdSAndroid Build Coastguard Worker  submit_bio
49*387f9dfdSAndroid Build Coastguard Worker  submit_bh
50*387f9dfdSAndroid Build Coastguard Worker  jbd2_journal_commit_transaction
51*387f9dfdSAndroid Build Coastguard Worker  kjournald2
52*387f9dfdSAndroid Build Coastguard Worker  kthread
53*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
54*387f9dfdSAndroid Build Coastguard Worker  mb_cache_list
55*387f9dfdSAndroid Build Coastguard Worker    38
56*387f9dfdSAndroid Build Coastguard Worker
57*387f9dfdSAndroid Build Coastguard Worker  submit_bio
58*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
59*387f9dfdSAndroid Build Coastguard Worker  do_writepages
60*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
61*387f9dfdSAndroid Build Coastguard Worker  filemap_flush
62*387f9dfdSAndroid Build Coastguard Worker  ext4_alloc_da_blocks
63*387f9dfdSAndroid Build Coastguard Worker  ext4_rename
64*387f9dfdSAndroid Build Coastguard Worker  ext4_rename2
65*387f9dfdSAndroid Build Coastguard Worker  vfs_rename
66*387f9dfdSAndroid Build Coastguard Worker  sys_rename
67*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
68*387f9dfdSAndroid Build Coastguard Worker    79
69*387f9dfdSAndroid Build Coastguard Worker
70*387f9dfdSAndroid Build Coastguard WorkerDetaching...
71*387f9dfdSAndroid Build Coastguard Worker
72*387f9dfdSAndroid Build Coastguard WorkerThe output shows unique stack traces, in order from leaf (on-CPU) to root,
73*387f9dfdSAndroid Build Coastguard Workerfollowed by their occurrence count. The last stack trace in the above output
74*387f9dfdSAndroid Build Coastguard Workershows syscall handling, ext4_rename(), and filemap_flush(): looks like an
75*387f9dfdSAndroid Build Coastguard Workerapplication issued file rename has caused back end disk I/O due to ext4
76*387f9dfdSAndroid Build Coastguard Workerblock allocation and a filemap_flush().
77*387f9dfdSAndroid Build Coastguard Worker
78*387f9dfdSAndroid Build Coastguard Worker
79*387f9dfdSAndroid Build Coastguard WorkerNow adding the -P option to display stacks separately for each process:
80*387f9dfdSAndroid Build Coastguard Worker
81*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -P submit_bio
82*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "submit_bio"... Hit Ctrl-C to end.
83*387f9dfdSAndroid Build Coastguard Worker^C
84*387f9dfdSAndroid Build Coastguard Worker  submit_bio
85*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
86*387f9dfdSAndroid Build Coastguard Worker  do_writepages
87*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
88*387f9dfdSAndroid Build Coastguard Worker  filemap_flush
89*387f9dfdSAndroid Build Coastguard Worker  ext4_alloc_da_blocks
90*387f9dfdSAndroid Build Coastguard Worker  ext4_release_file
91*387f9dfdSAndroid Build Coastguard Worker  __fput
92*387f9dfdSAndroid Build Coastguard Worker  ____fput
93*387f9dfdSAndroid Build Coastguard Worker  task_work_run
94*387f9dfdSAndroid Build Coastguard Worker  exit_to_usermode_loop
95*387f9dfdSAndroid Build Coastguard Worker  syscall_return_slowpath
96*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
97*387f9dfdSAndroid Build Coastguard Worker  [unknown]
98*387f9dfdSAndroid Build Coastguard Worker  [unknown]
99*387f9dfdSAndroid Build Coastguard Worker    tar [15069]
100*387f9dfdSAndroid Build Coastguard Worker    5
101*387f9dfdSAndroid Build Coastguard Worker
102*387f9dfdSAndroid Build Coastguard Worker  submit_bio
103*387f9dfdSAndroid Build Coastguard Worker  ext4_bio_write_page
104*387f9dfdSAndroid Build Coastguard Worker  mpage_submit_page
105*387f9dfdSAndroid Build Coastguard Worker  mpage_map_and_submit_buffers
106*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
107*387f9dfdSAndroid Build Coastguard Worker  do_writepages
108*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
109*387f9dfdSAndroid Build Coastguard Worker  filemap_flush
110*387f9dfdSAndroid Build Coastguard Worker  ext4_alloc_da_blocks
111*387f9dfdSAndroid Build Coastguard Worker  ext4_release_file
112*387f9dfdSAndroid Build Coastguard Worker  __fput
113*387f9dfdSAndroid Build Coastguard Worker  ____fput
114*387f9dfdSAndroid Build Coastguard Worker  task_work_run
115*387f9dfdSAndroid Build Coastguard Worker  exit_to_usermode_loop
116*387f9dfdSAndroid Build Coastguard Worker  syscall_return_slowpath
117*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
118*387f9dfdSAndroid Build Coastguard Worker  [unknown]
119*387f9dfdSAndroid Build Coastguard Worker  [unknown]
120*387f9dfdSAndroid Build Coastguard Worker    tar [15069]
121*387f9dfdSAndroid Build Coastguard Worker    15
122*387f9dfdSAndroid Build Coastguard Worker
123*387f9dfdSAndroid Build Coastguard Worker  submit_bio
124*387f9dfdSAndroid Build Coastguard Worker  ext4_readpages
125*387f9dfdSAndroid Build Coastguard Worker  __do_page_cache_readahead
126*387f9dfdSAndroid Build Coastguard Worker  ondemand_readahead
127*387f9dfdSAndroid Build Coastguard Worker  page_cache_async_readahead
128*387f9dfdSAndroid Build Coastguard Worker  generic_file_read_iter
129*387f9dfdSAndroid Build Coastguard Worker  __vfs_read
130*387f9dfdSAndroid Build Coastguard Worker  vfs_read
131*387f9dfdSAndroid Build Coastguard Worker  sys_read
132*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
133*387f9dfdSAndroid Build Coastguard Worker  [unknown]
134*387f9dfdSAndroid Build Coastguard Worker    tar [15069]
135*387f9dfdSAndroid Build Coastguard Worker    113
136*387f9dfdSAndroid Build Coastguard Worker
137*387f9dfdSAndroid Build Coastguard WorkerDetaching...
138*387f9dfdSAndroid Build Coastguard Worker
139*387f9dfdSAndroid Build Coastguard WorkerThe last stack trace in the above output shows syscall handling, sys_read(),
140*387f9dfdSAndroid Build Coastguard Workervfs_read(), and then "readahead" functions: looks like an application issued
141*387f9dfdSAndroid Build Coastguard Workerfile read has triggered read ahead. With "-P", the application can be seen
142*387f9dfdSAndroid Build Coastguard Workerafter the stack trace, in this case, "tar [15069]" for the "tar" command,
143*387f9dfdSAndroid Build Coastguard WorkerPID 15069.
144*387f9dfdSAndroid Build Coastguard Worker
145*387f9dfdSAndroid Build Coastguard WorkerThe order of printed stack traces is from least to most frequent. The most
146*387f9dfdSAndroid Build Coastguard Workerfrequent in this case, the ext4_readpages() stack, was taken 113 times during
147*387f9dfdSAndroid Build Coastguard Workertracing.
148*387f9dfdSAndroid Build Coastguard Worker
149*387f9dfdSAndroid Build Coastguard WorkerThe "[unknown]" frames are from user-level, since this simple workload is
150*387f9dfdSAndroid Build Coastguard Workerthe tar command, which apparently has been compiled without frame pointers.
151*387f9dfdSAndroid Build Coastguard WorkerIt's a common compiler optimization, but it breaks frame pointer-based stack
152*387f9dfdSAndroid Build Coastguard Workerwalkers. Similar broken stacks will be seen by other profilers and debuggers
153*387f9dfdSAndroid Build Coastguard Workerthat use frame pointers. Hopefully your application preserves them so that
154*387f9dfdSAndroid Build Coastguard Workerthe user-level stack trace is visible. So how does one get frame pointers, if
155*387f9dfdSAndroid Build Coastguard Workeryour application doesn't have them to start with? For the current bcc (until
156*387f9dfdSAndroid Build Coastguard Workerit supports other stack walkers), you need to be running an application binaries
157*387f9dfdSAndroid Build Coastguard Workerthat preserves frame pointers, eg, using gcc's -fno-omit-frame-pointer. That's
158*387f9dfdSAndroid Build Coastguard Workerabout all I'll say here: this is a big topic that is not bcc/BPF specific.
159*387f9dfdSAndroid Build Coastguard Worker
160*387f9dfdSAndroid Build Coastguard WorkerIt can be useful to trace the path to submit_bio to explain unusual rates of
161*387f9dfdSAndroid Build Coastguard Workerdisk IOPS. These could have in-kernel origins (eg, background scrub).
162*387f9dfdSAndroid Build Coastguard Worker
163*387f9dfdSAndroid Build Coastguard Worker
164*387f9dfdSAndroid Build Coastguard WorkerNow adding the -d option to delimit kernel and user stacks:
165*387f9dfdSAndroid Build Coastguard Worker
166*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -P -d submit_bio
167*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "submit_bio"... Hit Ctrl-C to end.
168*387f9dfdSAndroid Build Coastguard Worker^C
169*387f9dfdSAndroid Build Coastguard Worker  submit_bio
170*387f9dfdSAndroid Build Coastguard Worker  submit_bh
171*387f9dfdSAndroid Build Coastguard Worker  journal_submit_commit_record
172*387f9dfdSAndroid Build Coastguard Worker  jbd2_journal_commit_transaction
173*387f9dfdSAndroid Build Coastguard Worker  kjournald2
174*387f9dfdSAndroid Build Coastguard Worker  kthread
175*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
176*387f9dfdSAndroid Build Coastguard Worker    --
177*387f9dfdSAndroid Build Coastguard Worker    jbd2/xvda1-8 [405]
178*387f9dfdSAndroid Build Coastguard Worker    1
179*387f9dfdSAndroid Build Coastguard Worker
180*387f9dfdSAndroid Build Coastguard Worker  submit_bio
181*387f9dfdSAndroid Build Coastguard Worker  submit_bh
182*387f9dfdSAndroid Build Coastguard Worker  jbd2_journal_commit_transaction
183*387f9dfdSAndroid Build Coastguard Worker  kjournald2
184*387f9dfdSAndroid Build Coastguard Worker  kthread
185*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
186*387f9dfdSAndroid Build Coastguard Worker    --
187*387f9dfdSAndroid Build Coastguard Worker    jbd2/xvda1-8 [405]
188*387f9dfdSAndroid Build Coastguard Worker    2
189*387f9dfdSAndroid Build Coastguard Worker
190*387f9dfdSAndroid Build Coastguard Worker  submit_bio
191*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
192*387f9dfdSAndroid Build Coastguard Worker  do_writepages
193*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
194*387f9dfdSAndroid Build Coastguard Worker  filemap_flush
195*387f9dfdSAndroid Build Coastguard Worker  ext4_alloc_da_blocks
196*387f9dfdSAndroid Build Coastguard Worker  ext4_release_file
197*387f9dfdSAndroid Build Coastguard Worker  __fput
198*387f9dfdSAndroid Build Coastguard Worker  ____fput
199*387f9dfdSAndroid Build Coastguard Worker  task_work_run
200*387f9dfdSAndroid Build Coastguard Worker  exit_to_usermode_loop
201*387f9dfdSAndroid Build Coastguard Worker  syscall_return_slowpath
202*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
203*387f9dfdSAndroid Build Coastguard Worker    --
204*387f9dfdSAndroid Build Coastguard Worker  [unknown]
205*387f9dfdSAndroid Build Coastguard Worker  [unknown]
206*387f9dfdSAndroid Build Coastguard Worker    tar [15187]
207*387f9dfdSAndroid Build Coastguard Worker    5
208*387f9dfdSAndroid Build Coastguard Worker
209*387f9dfdSAndroid Build Coastguard Worker  submit_bio
210*387f9dfdSAndroid Build Coastguard Worker  ext4_bio_write_page
211*387f9dfdSAndroid Build Coastguard Worker  mpage_submit_page
212*387f9dfdSAndroid Build Coastguard Worker  mpage_map_and_submit_buffers
213*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
214*387f9dfdSAndroid Build Coastguard Worker  do_writepages
215*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
216*387f9dfdSAndroid Build Coastguard Worker  filemap_flush
217*387f9dfdSAndroid Build Coastguard Worker  ext4_alloc_da_blocks
218*387f9dfdSAndroid Build Coastguard Worker  ext4_release_file
219*387f9dfdSAndroid Build Coastguard Worker  __fput
220*387f9dfdSAndroid Build Coastguard Worker  ____fput
221*387f9dfdSAndroid Build Coastguard Worker  task_work_run
222*387f9dfdSAndroid Build Coastguard Worker  exit_to_usermode_loop
223*387f9dfdSAndroid Build Coastguard Worker  syscall_return_slowpath
224*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
225*387f9dfdSAndroid Build Coastguard Worker    --
226*387f9dfdSAndroid Build Coastguard Worker  [unknown]
227*387f9dfdSAndroid Build Coastguard Worker  [unknown]
228*387f9dfdSAndroid Build Coastguard Worker    tar [15187]
229*387f9dfdSAndroid Build Coastguard Worker    15
230*387f9dfdSAndroid Build Coastguard Worker
231*387f9dfdSAndroid Build Coastguard Worker  submit_bio
232*387f9dfdSAndroid Build Coastguard Worker  ext4_readpages
233*387f9dfdSAndroid Build Coastguard Worker  __do_page_cache_readahead
234*387f9dfdSAndroid Build Coastguard Worker  ondemand_readahead
235*387f9dfdSAndroid Build Coastguard Worker  page_cache_async_readahead
236*387f9dfdSAndroid Build Coastguard Worker  generic_file_read_iter
237*387f9dfdSAndroid Build Coastguard Worker  __vfs_read
238*387f9dfdSAndroid Build Coastguard Worker  vfs_read
239*387f9dfdSAndroid Build Coastguard Worker  sys_read
240*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
241*387f9dfdSAndroid Build Coastguard Worker    --
242*387f9dfdSAndroid Build Coastguard Worker  [unknown]
243*387f9dfdSAndroid Build Coastguard Worker  [unknown]
244*387f9dfdSAndroid Build Coastguard Worker  [unknown]
245*387f9dfdSAndroid Build Coastguard Worker    tar [15187]
246*387f9dfdSAndroid Build Coastguard Worker    171
247*387f9dfdSAndroid Build Coastguard Worker
248*387f9dfdSAndroid Build Coastguard WorkerDetaching...
249*387f9dfdSAndroid Build Coastguard Worker
250*387f9dfdSAndroid Build Coastguard WorkerA "--" is printed between the kernel and user stacks.
251*387f9dfdSAndroid Build Coastguard Worker
252*387f9dfdSAndroid Build Coastguard Worker
253*387f9dfdSAndroid Build Coastguard WorkerAs a different example, here is the kernel function hrtimer_init_sleeper():
254*387f9dfdSAndroid Build Coastguard Worker
255*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -P -d hrtimer_init_sleeper
256*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "hrtimer_init_sleeper"... Hit Ctrl-C to end.
257*387f9dfdSAndroid Build Coastguard Worker^C
258*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
259*387f9dfdSAndroid Build Coastguard Worker  do_futex
260*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
261*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
262*387f9dfdSAndroid Build Coastguard Worker    --
263*387f9dfdSAndroid Build Coastguard Worker  [unknown]
264*387f9dfdSAndroid Build Coastguard Worker    containerd [16020]
265*387f9dfdSAndroid Build Coastguard Worker    1
266*387f9dfdSAndroid Build Coastguard Worker
267*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
268*387f9dfdSAndroid Build Coastguard Worker  do_futex
269*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
270*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
271*387f9dfdSAndroid Build Coastguard Worker    --
272*387f9dfdSAndroid Build Coastguard Worker  __pthread_cond_timedwait
273*387f9dfdSAndroid Build Coastguard Worker  Monitor::IWait(Thread*, long)
274*387f9dfdSAndroid Build Coastguard Worker  Monitor::wait(bool, long, bool)
275*387f9dfdSAndroid Build Coastguard Worker  CompileQueue::get()
276*387f9dfdSAndroid Build Coastguard Worker  CompileBroker::compiler_thread_loop()
277*387f9dfdSAndroid Build Coastguard Worker  JavaThread::thread_main_inner()
278*387f9dfdSAndroid Build Coastguard Worker  JavaThread::run()
279*387f9dfdSAndroid Build Coastguard Worker  java_start(Thread*)
280*387f9dfdSAndroid Build Coastguard Worker  start_thread
281*387f9dfdSAndroid Build Coastguard Worker    java [4996]
282*387f9dfdSAndroid Build Coastguard Worker    1
283*387f9dfdSAndroid Build Coastguard Worker
284*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
285*387f9dfdSAndroid Build Coastguard Worker  do_futex
286*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
287*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
288*387f9dfdSAndroid Build Coastguard Worker    --
289*387f9dfdSAndroid Build Coastguard Worker  [unknown]
290*387f9dfdSAndroid Build Coastguard Worker  [unknown]
291*387f9dfdSAndroid Build Coastguard Worker    containerd [16020]
292*387f9dfdSAndroid Build Coastguard Worker    1
293*387f9dfdSAndroid Build Coastguard Worker
294*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
295*387f9dfdSAndroid Build Coastguard Worker  do_futex
296*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
297*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
298*387f9dfdSAndroid Build Coastguard Worker    --
299*387f9dfdSAndroid Build Coastguard Worker  __pthread_cond_timedwait
300*387f9dfdSAndroid Build Coastguard Worker  VMThread::loop()
301*387f9dfdSAndroid Build Coastguard Worker  VMThread::run()
302*387f9dfdSAndroid Build Coastguard Worker  java_start(Thread*)
303*387f9dfdSAndroid Build Coastguard Worker  start_thread
304*387f9dfdSAndroid Build Coastguard Worker    java [4996]
305*387f9dfdSAndroid Build Coastguard Worker    3
306*387f9dfdSAndroid Build Coastguard Worker
307*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
308*387f9dfdSAndroid Build Coastguard Worker  do_futex
309*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
310*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
311*387f9dfdSAndroid Build Coastguard Worker    --
312*387f9dfdSAndroid Build Coastguard Worker  [unknown]
313*387f9dfdSAndroid Build Coastguard Worker    dockerd [16008]
314*387f9dfdSAndroid Build Coastguard Worker    4
315*387f9dfdSAndroid Build Coastguard Worker
316*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
317*387f9dfdSAndroid Build Coastguard Worker  do_futex
318*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
319*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
320*387f9dfdSAndroid Build Coastguard Worker    --
321*387f9dfdSAndroid Build Coastguard Worker  [unknown]
322*387f9dfdSAndroid Build Coastguard Worker  [unknown]
323*387f9dfdSAndroid Build Coastguard Worker    dockerd [16008]
324*387f9dfdSAndroid Build Coastguard Worker    4
325*387f9dfdSAndroid Build Coastguard Worker
326*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
327*387f9dfdSAndroid Build Coastguard Worker  do_futex
328*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
329*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
330*387f9dfdSAndroid Build Coastguard Worker    --
331*387f9dfdSAndroid Build Coastguard Worker  __pthread_cond_timedwait
332*387f9dfdSAndroid Build Coastguard Worker  Lio/netty/util/ThreadDeathWatcher$Watcher;::run
333*387f9dfdSAndroid Build Coastguard Worker  Interpreter
334*387f9dfdSAndroid Build Coastguard Worker  Interpreter
335*387f9dfdSAndroid Build Coastguard Worker  call_stub
336*387f9dfdSAndroid Build Coastguard Worker  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)
337*387f9dfdSAndroid Build Coastguard Worker  JavaCalls::call_virtual(JavaValue*, KlassHandle, Symbol*, Symbol*, JavaCallArguments*, Thread*)
338*387f9dfdSAndroid Build Coastguard Worker  JavaCalls::call_virtual(JavaValue*, Handle, KlassHandle, Symbol*, Symbol*, Thread*)
339*387f9dfdSAndroid Build Coastguard Worker  thread_entry(JavaThread*, Thread*)
340*387f9dfdSAndroid Build Coastguard Worker  JavaThread::thread_main_inner()
341*387f9dfdSAndroid Build Coastguard Worker  JavaThread::run()
342*387f9dfdSAndroid Build Coastguard Worker  java_start(Thread*)
343*387f9dfdSAndroid Build Coastguard Worker  start_thread
344*387f9dfdSAndroid Build Coastguard Worker    java [4996]
345*387f9dfdSAndroid Build Coastguard Worker    4
346*387f9dfdSAndroid Build Coastguard Worker
347*387f9dfdSAndroid Build Coastguard Worker  hrtimer_init_sleeper
348*387f9dfdSAndroid Build Coastguard Worker  do_futex
349*387f9dfdSAndroid Build Coastguard Worker  SyS_futex
350*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
351*387f9dfdSAndroid Build Coastguard Worker    --
352*387f9dfdSAndroid Build Coastguard Worker  __pthread_cond_timedwait
353*387f9dfdSAndroid Build Coastguard Worker  clock_gettime
354*387f9dfdSAndroid Build Coastguard Worker  [unknown]
355*387f9dfdSAndroid Build Coastguard Worker    java [4996]
356*387f9dfdSAndroid Build Coastguard Worker    79
357*387f9dfdSAndroid Build Coastguard Worker
358*387f9dfdSAndroid Build Coastguard WorkerDetaching...
359*387f9dfdSAndroid Build Coastguard Worker
360*387f9dfdSAndroid Build Coastguard WorkerI was just trying to find a more interesting example. This output includes
361*387f9dfdSAndroid Build Coastguard Workersome Java stacks where user-level has been walked correctly (even includes a
362*387f9dfdSAndroid Build Coastguard WorkerJIT symbol translation). dockerd and containerd don't have frame pointers
363*387f9dfdSAndroid Build Coastguard Worker(grumble), but Java does (which is running with -XX:+PreserveFramePointer).
364*387f9dfdSAndroid Build Coastguard Worker
365*387f9dfdSAndroid Build Coastguard Worker
366*387f9dfdSAndroid Build Coastguard WorkerHere's another kernel function, ip_output():
367*387f9dfdSAndroid Build Coastguard Worker
368*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -P -d ip_output
369*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "ip_output"... Hit Ctrl-C to end.
370*387f9dfdSAndroid Build Coastguard Worker^C
371*387f9dfdSAndroid Build Coastguard Worker  ip_output
372*387f9dfdSAndroid Build Coastguard Worker  ip_queue_xmit
373*387f9dfdSAndroid Build Coastguard Worker  tcp_transmit_skb
374*387f9dfdSAndroid Build Coastguard Worker  tcp_write_xmit
375*387f9dfdSAndroid Build Coastguard Worker  __tcp_push_pending_frames
376*387f9dfdSAndroid Build Coastguard Worker  tcp_push
377*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg
378*387f9dfdSAndroid Build Coastguard Worker  inet_sendmsg
379*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg
380*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter
381*387f9dfdSAndroid Build Coastguard Worker  __vfs_write
382*387f9dfdSAndroid Build Coastguard Worker  vfs_write
383*387f9dfdSAndroid Build Coastguard Worker  SyS_write
384*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
385*387f9dfdSAndroid Build Coastguard Worker    --
386*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel
387*387f9dfdSAndroid Build Coastguard Worker  [unknown]
388*387f9dfdSAndroid Build Coastguard Worker    sshd [15015]
389*387f9dfdSAndroid Build Coastguard Worker    5
390*387f9dfdSAndroid Build Coastguard Worker
391*387f9dfdSAndroid Build Coastguard Worker  ip_output
392*387f9dfdSAndroid Build Coastguard Worker  ip_queue_xmit
393*387f9dfdSAndroid Build Coastguard Worker  tcp_transmit_skb
394*387f9dfdSAndroid Build Coastguard Worker  tcp_write_xmit
395*387f9dfdSAndroid Build Coastguard Worker  __tcp_push_pending_frames
396*387f9dfdSAndroid Build Coastguard Worker  tcp_push
397*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg
398*387f9dfdSAndroid Build Coastguard Worker  inet_sendmsg
399*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg
400*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter
401*387f9dfdSAndroid Build Coastguard Worker  __vfs_write
402*387f9dfdSAndroid Build Coastguard Worker  vfs_write
403*387f9dfdSAndroid Build Coastguard Worker  SyS_write
404*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
405*387f9dfdSAndroid Build Coastguard Worker    --
406*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel
407*387f9dfdSAndroid Build Coastguard Worker  [unknown]
408*387f9dfdSAndroid Build Coastguard Worker  [unknown]
409*387f9dfdSAndroid Build Coastguard Worker    sshd [8234]
410*387f9dfdSAndroid Build Coastguard Worker    5
411*387f9dfdSAndroid Build Coastguard Worker
412*387f9dfdSAndroid Build Coastguard Worker  ip_output
413*387f9dfdSAndroid Build Coastguard Worker  ip_queue_xmit
414*387f9dfdSAndroid Build Coastguard Worker  tcp_transmit_skb
415*387f9dfdSAndroid Build Coastguard Worker  tcp_write_xmit
416*387f9dfdSAndroid Build Coastguard Worker  __tcp_push_pending_frames
417*387f9dfdSAndroid Build Coastguard Worker  tcp_push
418*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg
419*387f9dfdSAndroid Build Coastguard Worker  inet_sendmsg
420*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg
421*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter
422*387f9dfdSAndroid Build Coastguard Worker  __vfs_write
423*387f9dfdSAndroid Build Coastguard Worker  vfs_write
424*387f9dfdSAndroid Build Coastguard Worker  SyS_write
425*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
426*387f9dfdSAndroid Build Coastguard Worker    --
427*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel
428*387f9dfdSAndroid Build Coastguard Worker    sshd [15015]
429*387f9dfdSAndroid Build Coastguard Worker    7
430*387f9dfdSAndroid Build Coastguard Worker
431*387f9dfdSAndroid Build Coastguard WorkerDetaching...
432*387f9dfdSAndroid Build Coastguard Worker
433*387f9dfdSAndroid Build Coastguard WorkerThis time just sshd is triggering ip_output() calls.
434*387f9dfdSAndroid Build Coastguard Worker
435*387f9dfdSAndroid Build Coastguard Worker
436*387f9dfdSAndroid Build Coastguard WorkerWatch what happens if I filter on kernel stacks only (-K) for ip_output():
437*387f9dfdSAndroid Build Coastguard Worker
438*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -K ip_output
439*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "ip_output"... Hit Ctrl-C to end.
440*387f9dfdSAndroid Build Coastguard Worker^C
441*387f9dfdSAndroid Build Coastguard Worker  ip_output
442*387f9dfdSAndroid Build Coastguard Worker  ip_queue_xmit
443*387f9dfdSAndroid Build Coastguard Worker  tcp_transmit_skb
444*387f9dfdSAndroid Build Coastguard Worker  tcp_write_xmit
445*387f9dfdSAndroid Build Coastguard Worker  __tcp_push_pending_frames
446*387f9dfdSAndroid Build Coastguard Worker  tcp_push
447*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg
448*387f9dfdSAndroid Build Coastguard Worker  inet_sendmsg
449*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg
450*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter
451*387f9dfdSAndroid Build Coastguard Worker  __vfs_write
452*387f9dfdSAndroid Build Coastguard Worker  vfs_write
453*387f9dfdSAndroid Build Coastguard Worker  SyS_write
454*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
455*387f9dfdSAndroid Build Coastguard Worker    13
456*387f9dfdSAndroid Build Coastguard Worker
457*387f9dfdSAndroid Build Coastguard WorkerDetaching...
458*387f9dfdSAndroid Build Coastguard Worker
459*387f9dfdSAndroid Build Coastguard WorkerThey have grouped together as a single unique stack, since the kernel part
460*387f9dfdSAndroid Build Coastguard Workerwas the same.
461*387f9dfdSAndroid Build Coastguard Worker
462*387f9dfdSAndroid Build Coastguard Worker
463*387f9dfdSAndroid Build Coastguard WorkerHere is just the user stacks, fetched during the kernel function ip_output():
464*387f9dfdSAndroid Build Coastguard Worker
465*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -P -U ip_output
466*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "ip_output"... Hit Ctrl-C to end.
467*387f9dfdSAndroid Build Coastguard Worker^C
468*387f9dfdSAndroid Build Coastguard Worker  [unknown]
469*387f9dfdSAndroid Build Coastguard Worker    snmpd [1645]
470*387f9dfdSAndroid Build Coastguard Worker    1
471*387f9dfdSAndroid Build Coastguard Worker
472*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel
473*387f9dfdSAndroid Build Coastguard Worker  [unknown]
474*387f9dfdSAndroid Build Coastguard Worker  [unknown]
475*387f9dfdSAndroid Build Coastguard Worker    sshd [8234]
476*387f9dfdSAndroid Build Coastguard Worker    3
477*387f9dfdSAndroid Build Coastguard Worker
478*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel
479*387f9dfdSAndroid Build Coastguard Worker    sshd [15015]
480*387f9dfdSAndroid Build Coastguard Worker    4
481*387f9dfdSAndroid Build Coastguard Worker
482*387f9dfdSAndroid Build Coastguard WorkerI should really run a custom sshd with frame pointers so we can see its
483*387f9dfdSAndroid Build Coastguard Workerstack trace...
484*387f9dfdSAndroid Build Coastguard Worker
485*387f9dfdSAndroid Build Coastguard Worker
486*387f9dfdSAndroid Build Coastguard WorkerUser-space functions can also be traced if a library name is provided. For
487*387f9dfdSAndroid Build Coastguard Workerexample, to quickly identify code locations that allocate heap memory for
488*387f9dfdSAndroid Build Coastguard WorkerPID 4902 (using -p), by tracing malloc from libc ("c:malloc"):
489*387f9dfdSAndroid Build Coastguard Worker
490*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -p 4902 c:malloc
491*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "malloc"... Hit Ctrl-C to end.
492*387f9dfdSAndroid Build Coastguard Worker^C
493*387f9dfdSAndroid Build Coastguard Worker  malloc
494*387f9dfdSAndroid Build Coastguard Worker  rbtree_new
495*387f9dfdSAndroid Build Coastguard Worker  main
496*387f9dfdSAndroid Build Coastguard Worker  [unknown]
497*387f9dfdSAndroid Build Coastguard Worker    12
498*387f9dfdSAndroid Build Coastguard Worker
499*387f9dfdSAndroid Build Coastguard Worker  malloc
500*387f9dfdSAndroid Build Coastguard Worker  _rbtree_node_new_internal
501*387f9dfdSAndroid Build Coastguard Worker  _rbtree_node_insert
502*387f9dfdSAndroid Build Coastguard Worker  rbtree_insert
503*387f9dfdSAndroid Build Coastguard Worker  main
504*387f9dfdSAndroid Build Coastguard Worker  [unknown]
505*387f9dfdSAndroid Build Coastguard Worker    1189
506*387f9dfdSAndroid Build Coastguard Worker
507*387f9dfdSAndroid Build Coastguard WorkerDetaching...
508*387f9dfdSAndroid Build Coastguard Worker
509*387f9dfdSAndroid Build Coastguard WorkerKernel stacks are absent as this didn't enter kernel code.
510*387f9dfdSAndroid Build Coastguard Worker
511*387f9dfdSAndroid Build Coastguard WorkerNote that user-space uses of stackcount can be somewhat more limited because
512*387f9dfdSAndroid Build Coastguard Workera lot of user-space libraries and binaries are compiled without frame-pointers
513*387f9dfdSAndroid Build Coastguard Workeras discussed earlier (the -fomit-frame-pointer compiler default) or are used
514*387f9dfdSAndroid Build Coastguard Workerwithout debuginfo.
515*387f9dfdSAndroid Build Coastguard Worker
516*387f9dfdSAndroid Build Coastguard Worker
517*387f9dfdSAndroid Build Coastguard WorkerIn addition to kernel and user-space functions, kernel tracepoints and USDT
518*387f9dfdSAndroid Build Coastguard Workertracepoints are also supported.
519*387f9dfdSAndroid Build Coastguard Worker
520*387f9dfdSAndroid Build Coastguard WorkerFor example, to determine where threads are being created in a particular
521*387f9dfdSAndroid Build Coastguard Workerprocess, use the pthread_create USDT tracepoint:
522*387f9dfdSAndroid Build Coastguard Worker
523*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -P -p $(pidof parprimes) u:pthread:pthread_create
524*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "u:pthread:pthread_create"... Hit Ctrl-C to end.
525*387f9dfdSAndroid Build Coastguard Worker^C
526*387f9dfdSAndroid Build Coastguard Worker
527*387f9dfdSAndroid Build Coastguard Worker    parprimes [11923]
528*387f9dfdSAndroid Build Coastguard Worker  pthread_create@@GLIBC_2.2.5
529*387f9dfdSAndroid Build Coastguard Worker  main
530*387f9dfdSAndroid Build Coastguard Worker  __libc_start_main
531*387f9dfdSAndroid Build Coastguard Worker  [unknown]
532*387f9dfdSAndroid Build Coastguard Worker    7
533*387f9dfdSAndroid Build Coastguard Worker
534*387f9dfdSAndroid Build Coastguard WorkerYou can use "readelf -n file" to see if it has USDT tracepoints.
535*387f9dfdSAndroid Build Coastguard Worker
536*387f9dfdSAndroid Build Coastguard Worker
537*387f9dfdSAndroid Build Coastguard WorkerSimilarly, to determine where context switching is happening in the kernel,
538*387f9dfdSAndroid Build Coastguard Workeruse the sched:sched_switch kernel tracepoint:
539*387f9dfdSAndroid Build Coastguard Worker
540*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -P t:sched:sched_switch
541*387f9dfdSAndroid Build Coastguard Worker  __schedule
542*387f9dfdSAndroid Build Coastguard Worker  schedule
543*387f9dfdSAndroid Build Coastguard Worker  worker_thread
544*387f9dfdSAndroid Build Coastguard Worker  kthread
545*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
546*387f9dfdSAndroid Build Coastguard Worker    kworker/0:2 [25482]
547*387f9dfdSAndroid Build Coastguard Worker    1
548*387f9dfdSAndroid Build Coastguard Worker
549*387f9dfdSAndroid Build Coastguard Worker  __schedule
550*387f9dfdSAndroid Build Coastguard Worker  schedule
551*387f9dfdSAndroid Build Coastguard Worker  schedule_hrtimeout_range_clock
552*387f9dfdSAndroid Build Coastguard Worker  schedule_hrtimeout_range
553*387f9dfdSAndroid Build Coastguard Worker  ep_poll
554*387f9dfdSAndroid Build Coastguard Worker  SyS_epoll_wait
555*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
556*387f9dfdSAndroid Build Coastguard Worker  epoll_wait
557*387f9dfdSAndroid Build Coastguard Worker  Lsun/nio/ch/SelectorImpl;::lockAndDoSelect
558*387f9dfdSAndroid Build Coastguard Worker  Lsun/nio/ch/SelectorImpl;::select
559*387f9dfdSAndroid Build Coastguard Worker  Lio/netty/channel/nio/NioEventLoop;::select
560*387f9dfdSAndroid Build Coastguard Worker  Lio/netty/channel/nio/NioEventLoop;::run
561*387f9dfdSAndroid Build Coastguard Worker  Interpreter
562*387f9dfdSAndroid Build Coastguard Worker  Interpreter
563*387f9dfdSAndroid Build Coastguard Worker  call_stub
564*387f9dfdSAndroid Build Coastguard Worker  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)
565*387f9dfdSAndroid Build Coastguard Worker  JavaCalls::call_virtual(JavaValue*, KlassHandle, Symbol*, Symbol*, JavaCallArguments*, Thread*)
566*387f9dfdSAndroid Build Coastguard Worker  JavaCalls::call_virtual(JavaValue*, Handle, KlassHandle, Symbol*, Symbol*, Thread*)
567*387f9dfdSAndroid Build Coastguard Worker  thread_entry(JavaThread*, Thread*)
568*387f9dfdSAndroid Build Coastguard Worker  JavaThread::thread_main_inner()
569*387f9dfdSAndroid Build Coastguard Worker  JavaThread::run()
570*387f9dfdSAndroid Build Coastguard Worker  java_start(Thread*)
571*387f9dfdSAndroid Build Coastguard Worker  start_thread
572*387f9dfdSAndroid Build Coastguard Worker    java [4996]
573*387f9dfdSAndroid Build Coastguard Worker    1
574*387f9dfdSAndroid Build Coastguard Worker
575*387f9dfdSAndroid Build Coastguard Worker... (omitted for brevity)
576*387f9dfdSAndroid Build Coastguard Worker
577*387f9dfdSAndroid Build Coastguard Worker  __schedule
578*387f9dfdSAndroid Build Coastguard Worker  schedule
579*387f9dfdSAndroid Build Coastguard Worker  schedule_preempt_disabled
580*387f9dfdSAndroid Build Coastguard Worker  cpu_startup_entry
581*387f9dfdSAndroid Build Coastguard Worker  xen_play_dead
582*387f9dfdSAndroid Build Coastguard Worker  arch_cpu_idle_dead
583*387f9dfdSAndroid Build Coastguard Worker  cpu_startup_entry
584*387f9dfdSAndroid Build Coastguard Worker  cpu_bringup_and_idle
585*387f9dfdSAndroid Build Coastguard Worker    swapper/1 [0]
586*387f9dfdSAndroid Build Coastguard Worker    289
587*387f9dfdSAndroid Build Coastguard Worker
588*387f9dfdSAndroid Build Coastguard Worker
589*387f9dfdSAndroid Build Coastguard WorkerA -i option can be used to set an output interval, and -T to include a
590*387f9dfdSAndroid Build Coastguard Workertimestamp. For example:
591*387f9dfdSAndroid Build Coastguard Worker
592*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -P -Tdi 1 submit_bio
593*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "submit_bio"... Hit Ctrl-C to end.
594*387f9dfdSAndroid Build Coastguard Worker
595*387f9dfdSAndroid Build Coastguard Worker06:05:13
596*387f9dfdSAndroid Build Coastguard Worker
597*387f9dfdSAndroid Build Coastguard Worker06:05:14
598*387f9dfdSAndroid Build Coastguard Worker  submit_bio
599*387f9dfdSAndroid Build Coastguard Worker  xfs_do_writepage
600*387f9dfdSAndroid Build Coastguard Worker  write_cache_pages
601*387f9dfdSAndroid Build Coastguard Worker  xfs_vm_writepages
602*387f9dfdSAndroid Build Coastguard Worker  do_writepages
603*387f9dfdSAndroid Build Coastguard Worker  __writeback_single_inode
604*387f9dfdSAndroid Build Coastguard Worker  writeback_sb_inodes
605*387f9dfdSAndroid Build Coastguard Worker  __writeback_inodes_wb
606*387f9dfdSAndroid Build Coastguard Worker  wb_writeback
607*387f9dfdSAndroid Build Coastguard Worker  wb_workfn
608*387f9dfdSAndroid Build Coastguard Worker  process_one_work
609*387f9dfdSAndroid Build Coastguard Worker  worker_thread
610*387f9dfdSAndroid Build Coastguard Worker  kthread
611*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
612*387f9dfdSAndroid Build Coastguard Worker    --
613*387f9dfdSAndroid Build Coastguard Worker    kworker/u16:1 [15686]
614*387f9dfdSAndroid Build Coastguard Worker    1
615*387f9dfdSAndroid Build Coastguard Worker
616*387f9dfdSAndroid Build Coastguard Worker  submit_bio
617*387f9dfdSAndroid Build Coastguard Worker  process_one_work
618*387f9dfdSAndroid Build Coastguard Worker  worker_thread
619*387f9dfdSAndroid Build Coastguard Worker  kthread
620*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
621*387f9dfdSAndroid Build Coastguard Worker    --
622*387f9dfdSAndroid Build Coastguard Worker    kworker/u16:0 [16007]
623*387f9dfdSAndroid Build Coastguard Worker    1
624*387f9dfdSAndroid Build Coastguard Worker
625*387f9dfdSAndroid Build Coastguard Worker  submit_bio
626*387f9dfdSAndroid Build Coastguard Worker  xfs_buf_submit
627*387f9dfdSAndroid Build Coastguard Worker  xlog_bdstrat
628*387f9dfdSAndroid Build Coastguard Worker  xlog_sync
629*387f9dfdSAndroid Build Coastguard Worker  xlog_state_release_iclog
630*387f9dfdSAndroid Build Coastguard Worker  _xfs_log_force
631*387f9dfdSAndroid Build Coastguard Worker  xfs_log_force
632*387f9dfdSAndroid Build Coastguard Worker  xfs_fs_sync_fs
633*387f9dfdSAndroid Build Coastguard Worker  sync_fs_one_sb
634*387f9dfdSAndroid Build Coastguard Worker  iterate_supers
635*387f9dfdSAndroid Build Coastguard Worker  sys_sync
636*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
637*387f9dfdSAndroid Build Coastguard Worker    --
638*387f9dfdSAndroid Build Coastguard Worker  [unknown]
639*387f9dfdSAndroid Build Coastguard Worker    sync [16039]
640*387f9dfdSAndroid Build Coastguard Worker    1
641*387f9dfdSAndroid Build Coastguard Worker
642*387f9dfdSAndroid Build Coastguard Worker  submit_bio
643*387f9dfdSAndroid Build Coastguard Worker  submit_bh
644*387f9dfdSAndroid Build Coastguard Worker  journal_submit_commit_record
645*387f9dfdSAndroid Build Coastguard Worker  jbd2_journal_commit_transaction
646*387f9dfdSAndroid Build Coastguard Worker  kjournald2
647*387f9dfdSAndroid Build Coastguard Worker  kthread
648*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
649*387f9dfdSAndroid Build Coastguard Worker    --
650*387f9dfdSAndroid Build Coastguard Worker    jbd2/xvda1-8 [405]
651*387f9dfdSAndroid Build Coastguard Worker    1
652*387f9dfdSAndroid Build Coastguard Worker
653*387f9dfdSAndroid Build Coastguard Worker  submit_bio
654*387f9dfdSAndroid Build Coastguard Worker  process_one_work
655*387f9dfdSAndroid Build Coastguard Worker  worker_thread
656*387f9dfdSAndroid Build Coastguard Worker  kthread
657*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
658*387f9dfdSAndroid Build Coastguard Worker    --
659*387f9dfdSAndroid Build Coastguard Worker    kworker/0:2 [25482]
660*387f9dfdSAndroid Build Coastguard Worker    2
661*387f9dfdSAndroid Build Coastguard Worker
662*387f9dfdSAndroid Build Coastguard Worker  submit_bio
663*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
664*387f9dfdSAndroid Build Coastguard Worker  do_writepages
665*387f9dfdSAndroid Build Coastguard Worker  __writeback_single_inode
666*387f9dfdSAndroid Build Coastguard Worker  writeback_sb_inodes
667*387f9dfdSAndroid Build Coastguard Worker  __writeback_inodes_wb
668*387f9dfdSAndroid Build Coastguard Worker  wb_writeback
669*387f9dfdSAndroid Build Coastguard Worker  wb_workfn
670*387f9dfdSAndroid Build Coastguard Worker  process_one_work
671*387f9dfdSAndroid Build Coastguard Worker  worker_thread
672*387f9dfdSAndroid Build Coastguard Worker  kthread
673*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
674*387f9dfdSAndroid Build Coastguard Worker    --
675*387f9dfdSAndroid Build Coastguard Worker    kworker/u16:0 [16007]
676*387f9dfdSAndroid Build Coastguard Worker    4
677*387f9dfdSAndroid Build Coastguard Worker
678*387f9dfdSAndroid Build Coastguard Worker  submit_bio
679*387f9dfdSAndroid Build Coastguard Worker  xfs_vm_writepages
680*387f9dfdSAndroid Build Coastguard Worker  do_writepages
681*387f9dfdSAndroid Build Coastguard Worker  __writeback_single_inode
682*387f9dfdSAndroid Build Coastguard Worker  writeback_sb_inodes
683*387f9dfdSAndroid Build Coastguard Worker  __writeback_inodes_wb
684*387f9dfdSAndroid Build Coastguard Worker  wb_writeback
685*387f9dfdSAndroid Build Coastguard Worker  wb_workfn
686*387f9dfdSAndroid Build Coastguard Worker  process_one_work
687*387f9dfdSAndroid Build Coastguard Worker  worker_thread
688*387f9dfdSAndroid Build Coastguard Worker  kthread
689*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
690*387f9dfdSAndroid Build Coastguard Worker    --
691*387f9dfdSAndroid Build Coastguard Worker    kworker/u16:1 [15686]
692*387f9dfdSAndroid Build Coastguard Worker    5
693*387f9dfdSAndroid Build Coastguard Worker
694*387f9dfdSAndroid Build Coastguard Worker  submit_bio
695*387f9dfdSAndroid Build Coastguard Worker  __block_write_full_page
696*387f9dfdSAndroid Build Coastguard Worker  block_write_full_page
697*387f9dfdSAndroid Build Coastguard Worker  blkdev_writepage
698*387f9dfdSAndroid Build Coastguard Worker  __writepage
699*387f9dfdSAndroid Build Coastguard Worker  write_cache_pages
700*387f9dfdSAndroid Build Coastguard Worker  generic_writepages
701*387f9dfdSAndroid Build Coastguard Worker  blkdev_writepages
702*387f9dfdSAndroid Build Coastguard Worker  do_writepages
703*387f9dfdSAndroid Build Coastguard Worker  __filemap_fdatawrite_range
704*387f9dfdSAndroid Build Coastguard Worker  filemap_fdatawrite
705*387f9dfdSAndroid Build Coastguard Worker  fdatawrite_one_bdev
706*387f9dfdSAndroid Build Coastguard Worker  iterate_bdevs
707*387f9dfdSAndroid Build Coastguard Worker  sys_sync
708*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath
709*387f9dfdSAndroid Build Coastguard Worker    --
710*387f9dfdSAndroid Build Coastguard Worker  [unknown]
711*387f9dfdSAndroid Build Coastguard Worker    sync [16039]
712*387f9dfdSAndroid Build Coastguard Worker    7
713*387f9dfdSAndroid Build Coastguard Worker
714*387f9dfdSAndroid Build Coastguard Worker  submit_bio
715*387f9dfdSAndroid Build Coastguard Worker  submit_bh
716*387f9dfdSAndroid Build Coastguard Worker  jbd2_journal_commit_transaction
717*387f9dfdSAndroid Build Coastguard Worker  kjournald2
718*387f9dfdSAndroid Build Coastguard Worker  kthread
719*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
720*387f9dfdSAndroid Build Coastguard Worker    --
721*387f9dfdSAndroid Build Coastguard Worker    jbd2/xvda1-8 [405]
722*387f9dfdSAndroid Build Coastguard Worker    8
723*387f9dfdSAndroid Build Coastguard Worker
724*387f9dfdSAndroid Build Coastguard Worker  submit_bio
725*387f9dfdSAndroid Build Coastguard Worker  ext4_bio_write_page
726*387f9dfdSAndroid Build Coastguard Worker  mpage_submit_page
727*387f9dfdSAndroid Build Coastguard Worker  mpage_map_and_submit_buffers
728*387f9dfdSAndroid Build Coastguard Worker  ext4_writepages
729*387f9dfdSAndroid Build Coastguard Worker  do_writepages
730*387f9dfdSAndroid Build Coastguard Worker  __writeback_single_inode
731*387f9dfdSAndroid Build Coastguard Worker  writeback_sb_inodes
732*387f9dfdSAndroid Build Coastguard Worker  __writeback_inodes_wb
733*387f9dfdSAndroid Build Coastguard Worker  wb_writeback
734*387f9dfdSAndroid Build Coastguard Worker  wb_workfn
735*387f9dfdSAndroid Build Coastguard Worker  process_one_work
736*387f9dfdSAndroid Build Coastguard Worker  worker_thread
737*387f9dfdSAndroid Build Coastguard Worker  kthread
738*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
739*387f9dfdSAndroid Build Coastguard Worker    --
740*387f9dfdSAndroid Build Coastguard Worker    kworker/u16:0 [16007]
741*387f9dfdSAndroid Build Coastguard Worker    8
742*387f9dfdSAndroid Build Coastguard Worker
743*387f9dfdSAndroid Build Coastguard Worker  submit_bio
744*387f9dfdSAndroid Build Coastguard Worker  __block_write_full_page
745*387f9dfdSAndroid Build Coastguard Worker  block_write_full_page
746*387f9dfdSAndroid Build Coastguard Worker  blkdev_writepage
747*387f9dfdSAndroid Build Coastguard Worker  __writepage
748*387f9dfdSAndroid Build Coastguard Worker  write_cache_pages
749*387f9dfdSAndroid Build Coastguard Worker  generic_writepages
750*387f9dfdSAndroid Build Coastguard Worker  blkdev_writepages
751*387f9dfdSAndroid Build Coastguard Worker  do_writepages
752*387f9dfdSAndroid Build Coastguard Worker  __writeback_single_inode
753*387f9dfdSAndroid Build Coastguard Worker  writeback_sb_inodes
754*387f9dfdSAndroid Build Coastguard Worker  __writeback_inodes_wb
755*387f9dfdSAndroid Build Coastguard Worker  wb_writeback
756*387f9dfdSAndroid Build Coastguard Worker  wb_workfn
757*387f9dfdSAndroid Build Coastguard Worker  process_one_work
758*387f9dfdSAndroid Build Coastguard Worker  worker_thread
759*387f9dfdSAndroid Build Coastguard Worker  kthread
760*387f9dfdSAndroid Build Coastguard Worker  ret_from_fork
761*387f9dfdSAndroid Build Coastguard Worker    --
762*387f9dfdSAndroid Build Coastguard Worker    kworker/u16:0 [16007]
763*387f9dfdSAndroid Build Coastguard Worker    60
764*387f9dfdSAndroid Build Coastguard Worker
765*387f9dfdSAndroid Build Coastguard Worker
766*387f9dfdSAndroid Build Coastguard Worker06:05:15
767*387f9dfdSAndroid Build Coastguard Worker
768*387f9dfdSAndroid Build Coastguard Worker06:05:16
769*387f9dfdSAndroid Build Coastguard Worker
770*387f9dfdSAndroid Build Coastguard WorkerDetaching...
771*387f9dfdSAndroid Build Coastguard Worker
772*387f9dfdSAndroid Build Coastguard WorkerThis only included output for the 06:05:14 interval. The other internals
773*387f9dfdSAndroid Build Coastguard Workerdid not span block device I/O.
774*387f9dfdSAndroid Build Coastguard Worker
775*387f9dfdSAndroid Build Coastguard Worker
776*387f9dfdSAndroid Build Coastguard WorkerThe -s output prints the return instruction offset for each function (aka
777*387f9dfdSAndroid Build Coastguard Workersymbol offset). Eg:
778*387f9dfdSAndroid Build Coastguard Worker
779*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -P -s tcp_sendmsg
780*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "tcp_sendmsg"... Hit Ctrl-C to end.
781*387f9dfdSAndroid Build Coastguard Worker^C
782*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg+0x1
783*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg+0x38
784*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter+0x85
785*387f9dfdSAndroid Build Coastguard Worker  __vfs_write+0xe3
786*387f9dfdSAndroid Build Coastguard Worker  vfs_write+0xb8
787*387f9dfdSAndroid Build Coastguard Worker  SyS_write+0x55
788*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath+0x1e
789*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel+0x7
790*387f9dfdSAndroid Build Coastguard Worker    sshd [15015]
791*387f9dfdSAndroid Build Coastguard Worker    3
792*387f9dfdSAndroid Build Coastguard Worker
793*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg+0x1
794*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg+0x38
795*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter+0x85
796*387f9dfdSAndroid Build Coastguard Worker  __vfs_write+0xe3
797*387f9dfdSAndroid Build Coastguard Worker  vfs_write+0xb8
798*387f9dfdSAndroid Build Coastguard Worker  SyS_write+0x55
799*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath+0x1e
800*387f9dfdSAndroid Build Coastguard Worker  __write_nocancel+0x7
801*387f9dfdSAndroid Build Coastguard Worker    sshd [8234]
802*387f9dfdSAndroid Build Coastguard Worker    3
803*387f9dfdSAndroid Build Coastguard Worker
804*387f9dfdSAndroid Build Coastguard WorkerDetaching...
805*387f9dfdSAndroid Build Coastguard Worker
806*387f9dfdSAndroid Build Coastguard WorkerIf it wasn't clear how one function called another, knowing the instruction
807*387f9dfdSAndroid Build Coastguard Workeroffset can help you locate the lines of code from a disassembly dump.
808*387f9dfdSAndroid Build Coastguard Worker
809*387f9dfdSAndroid Build Coastguard Worker
810*387f9dfdSAndroid Build Coastguard WorkerThe -v output is verbose, and shows raw addresses:
811*387f9dfdSAndroid Build Coastguard Worker
812*387f9dfdSAndroid Build Coastguard Worker./stackcount.py -P -v tcp_sendmsg
813*387f9dfdSAndroid Build Coastguard WorkerTracing 1 functions for "tcp_sendmsg"... Hit Ctrl-C to end.
814*387f9dfdSAndroid Build Coastguard Worker^C
815*387f9dfdSAndroid Build Coastguard Worker  ffffffff817b05c1 tcp_sendmsg
816*387f9dfdSAndroid Build Coastguard Worker  ffffffff8173ea48 sock_sendmsg
817*387f9dfdSAndroid Build Coastguard Worker  ffffffff8173eae5 sock_write_iter
818*387f9dfdSAndroid Build Coastguard Worker  ffffffff81232b33 __vfs_write
819*387f9dfdSAndroid Build Coastguard Worker  ffffffff812331b8 vfs_write
820*387f9dfdSAndroid Build Coastguard Worker  ffffffff81234625 SyS_write
821*387f9dfdSAndroid Build Coastguard Worker  ffffffff818739bb entry_SYSCALL_64_fastpath
822*387f9dfdSAndroid Build Coastguard Worker  7f120511e6e0     __write_nocancel
823*387f9dfdSAndroid Build Coastguard Worker    sshd [8234]
824*387f9dfdSAndroid Build Coastguard Worker    3
825*387f9dfdSAndroid Build Coastguard Worker
826*387f9dfdSAndroid Build Coastguard Worker  ffffffff817b05c1 tcp_sendmsg
827*387f9dfdSAndroid Build Coastguard Worker  ffffffff8173ea48 sock_sendmsg
828*387f9dfdSAndroid Build Coastguard Worker  ffffffff8173eae5 sock_write_iter
829*387f9dfdSAndroid Build Coastguard Worker  ffffffff81232b33 __vfs_write
830*387f9dfdSAndroid Build Coastguard Worker  ffffffff812331b8 vfs_write
831*387f9dfdSAndroid Build Coastguard Worker  ffffffff81234625 SyS_write
832*387f9dfdSAndroid Build Coastguard Worker  ffffffff818739bb entry_SYSCALL_64_fastpath
833*387f9dfdSAndroid Build Coastguard Worker  7f919c5a26e0     __write_nocancel
834*387f9dfdSAndroid Build Coastguard Worker    sshd [15015]
835*387f9dfdSAndroid Build Coastguard Worker    11
836*387f9dfdSAndroid Build Coastguard Worker
837*387f9dfdSAndroid Build Coastguard WorkerDetaching...
838*387f9dfdSAndroid Build Coastguard Worker
839*387f9dfdSAndroid Build Coastguard Worker
840*387f9dfdSAndroid Build Coastguard WorkerA wildcard can also be used. Eg, all functions beginning with "tcp_send",
841*387f9dfdSAndroid Build Coastguard Workerkernel stacks only (-K) with offsets (-s):
842*387f9dfdSAndroid Build Coastguard Worker
843*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -Ks 'tcp_send*'
844*387f9dfdSAndroid Build Coastguard WorkerTracing 14 functions for "tcp_send*"... Hit Ctrl-C to end.
845*387f9dfdSAndroid Build Coastguard Worker^C
846*387f9dfdSAndroid Build Coastguard Worker  tcp_send_delayed_ack0x1
847*387f9dfdSAndroid Build Coastguard Worker  tcp_rcv_established0x3b1
848*387f9dfdSAndroid Build Coastguard Worker  tcp_v4_do_rcv0x130
849*387f9dfdSAndroid Build Coastguard Worker  tcp_v4_rcv0x8e0
850*387f9dfdSAndroid Build Coastguard Worker  ip_local_deliver_finish0x9f
851*387f9dfdSAndroid Build Coastguard Worker  ip_local_deliver0x51
852*387f9dfdSAndroid Build Coastguard Worker  ip_rcv_finish0x8a
853*387f9dfdSAndroid Build Coastguard Worker  ip_rcv0x29d
854*387f9dfdSAndroid Build Coastguard Worker  __netif_receive_skb_core0x637
855*387f9dfdSAndroid Build Coastguard Worker  __netif_receive_skb0x18
856*387f9dfdSAndroid Build Coastguard Worker  netif_receive_skb_internal0x23
857*387f9dfdSAndroid Build Coastguard Worker    1
858*387f9dfdSAndroid Build Coastguard Worker
859*387f9dfdSAndroid Build Coastguard Worker  tcp_send_delayed_ack0x1
860*387f9dfdSAndroid Build Coastguard Worker  tcp_rcv_established0x222
861*387f9dfdSAndroid Build Coastguard Worker  tcp_v4_do_rcv0x130
862*387f9dfdSAndroid Build Coastguard Worker  tcp_v4_rcv0x8e0
863*387f9dfdSAndroid Build Coastguard Worker  ip_local_deliver_finish0x9f
864*387f9dfdSAndroid Build Coastguard Worker  ip_local_deliver0x51
865*387f9dfdSAndroid Build Coastguard Worker  ip_rcv_finish0x8a
866*387f9dfdSAndroid Build Coastguard Worker  ip_rcv0x29d
867*387f9dfdSAndroid Build Coastguard Worker  __netif_receive_skb_core0x637
868*387f9dfdSAndroid Build Coastguard Worker  __netif_receive_skb0x18
869*387f9dfdSAndroid Build Coastguard Worker  netif_receive_skb_internal0x23
870*387f9dfdSAndroid Build Coastguard Worker    4
871*387f9dfdSAndroid Build Coastguard Worker
872*387f9dfdSAndroid Build Coastguard Worker  tcp_send_mss0x1
873*387f9dfdSAndroid Build Coastguard Worker  inet_sendmsg0x67
874*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg0x38
875*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter0x78
876*387f9dfdSAndroid Build Coastguard Worker  __vfs_write0xaa
877*387f9dfdSAndroid Build Coastguard Worker  vfs_write0xa9
878*387f9dfdSAndroid Build Coastguard Worker  sys_write0x46
879*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath0x16
880*387f9dfdSAndroid Build Coastguard Worker    7
881*387f9dfdSAndroid Build Coastguard Worker
882*387f9dfdSAndroid Build Coastguard Worker  tcp_sendmsg0x1
883*387f9dfdSAndroid Build Coastguard Worker  sock_sendmsg0x38
884*387f9dfdSAndroid Build Coastguard Worker  sock_write_iter0x78
885*387f9dfdSAndroid Build Coastguard Worker  __vfs_write0xaa
886*387f9dfdSAndroid Build Coastguard Worker  vfs_write0xa9
887*387f9dfdSAndroid Build Coastguard Worker  sys_write0x46
888*387f9dfdSAndroid Build Coastguard Worker  entry_SYSCALL_64_fastpath0x16
889*387f9dfdSAndroid Build Coastguard Worker    7
890*387f9dfdSAndroid Build Coastguard Worker
891*387f9dfdSAndroid Build Coastguard WorkerDetaching...
892*387f9dfdSAndroid Build Coastguard Worker
893*387f9dfdSAndroid Build Coastguard WorkerUse -r to allow regular expressions.
894*387f9dfdSAndroid Build Coastguard Worker
895*387f9dfdSAndroid Build Coastguard Worker
896*387f9dfdSAndroid Build Coastguard WorkerThe -f option will emit folded output, which can be used as input to other
897*387f9dfdSAndroid Build Coastguard Workertools including flame graphs. For example, with delimiters as well:
898*387f9dfdSAndroid Build Coastguard Worker
899*387f9dfdSAndroid Build Coastguard Worker# ./stackcount.py -P -df t:sched:sched_switch
900*387f9dfdSAndroid Build Coastguard Worker^Csnmp-pass;[unknown];[unknown];[unknown];[unknown];[unknown];-;entry_SYSCALL_64_fastpath;SyS_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule;__schedule 1
901*387f9dfdSAndroid Build Coastguard Workerkworker/7:0;-;ret_from_fork;kthread;worker_thread;schedule;__schedule 1
902*387f9dfdSAndroid Build Coastguard Workerwatchdog/0;-;ret_from_fork;kthread;smpboot_thread_fn;schedule;__schedule 1
903*387f9dfdSAndroid Build Coastguard Workersnmp-pass;[unknown];[unknown];[unknown];[unknown];[unknown];-;entry_SYSCALL_64_fastpath;SyS_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule;__schedule 1
904*387f9dfdSAndroid Build Coastguard Workersvscan;[unknown];-;entry_SYSCALL_64_fastpath;SyS_nanosleep;hrtimer_nanosleep;do_nanosleep;schedule;__schedule 1
905*387f9dfdSAndroid Build Coastguard Workerpython;[unknown];__select_nocancel;-;entry_SYSCALL_64_fastpath;SyS_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule;__schedule 1
906*387f9dfdSAndroid Build Coastguard Workerkworker/2:0;-;ret_from_fork;kthread;worker_thread;schedule;__schedule 1
907*387f9dfdSAndroid Build Coastguard Worker[...]
908*387f9dfdSAndroid Build Coastguard Worker
909*387f9dfdSAndroid Build Coastguard WorkerFlame graphs visualize stack traces. For information about them and links
910*387f9dfdSAndroid Build Coastguard Workerto open source software, see http://www.brendangregg.com/flamegraphs.html .
911*387f9dfdSAndroid Build Coastguard WorkerThis folded output can be piped directly into flamegraph.pl (the Perl version).
912*387f9dfdSAndroid Build Coastguard Worker
913*387f9dfdSAndroid Build Coastguard Worker
914*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
915*387f9dfdSAndroid Build Coastguard Worker
916*387f9dfdSAndroid Build Coastguard Worker# ./stackcount -h
917*387f9dfdSAndroid Build Coastguard Workerusage: stackcount [-h] [-p PID] [-c CPU] [-i INTERVAL] [-D DURATION] [-T] [-r]
918*387f9dfdSAndroid Build Coastguard Worker                  [-s] [-P] [-K] [-U] [-v] [-d] [-f] [--debug]
919*387f9dfdSAndroid Build Coastguard Worker                  pattern
920*387f9dfdSAndroid Build Coastguard Worker
921*387f9dfdSAndroid Build Coastguard WorkerCount events and their stack traces
922*387f9dfdSAndroid Build Coastguard Worker
923*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
924*387f9dfdSAndroid Build Coastguard Worker  pattern               search expression for events
925*387f9dfdSAndroid Build Coastguard Worker
926*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
927*387f9dfdSAndroid Build Coastguard Worker  -h, --help            show this help message and exit
928*387f9dfdSAndroid Build Coastguard Worker  -p PID, --pid PID     trace this PID only
929*387f9dfdSAndroid Build Coastguard Worker  -c CPU, --cpu CPU     trace this CPU only
930*387f9dfdSAndroid Build Coastguard Worker  -i INTERVAL, --interval INTERVAL
931*387f9dfdSAndroid Build Coastguard Worker                        summary interval, seconds
932*387f9dfdSAndroid Build Coastguard Worker  -D DURATION, --duration DURATION
933*387f9dfdSAndroid Build Coastguard Worker                        total duration of trace, seconds
934*387f9dfdSAndroid Build Coastguard Worker  -T, --timestamp       include timestamp on output
935*387f9dfdSAndroid Build Coastguard Worker  -r, --regexp          use regular expressions. Default is "*" wildcards
936*387f9dfdSAndroid Build Coastguard Worker                        only.
937*387f9dfdSAndroid Build Coastguard Worker  -s, --offset          show address offsets
938*387f9dfdSAndroid Build Coastguard Worker  -P, --perpid          display stacks separately for each process
939*387f9dfdSAndroid Build Coastguard Worker  -K, --kernel-stacks-only
940*387f9dfdSAndroid Build Coastguard Worker                        kernel stack only
941*387f9dfdSAndroid Build Coastguard Worker  -U, --user-stacks-only
942*387f9dfdSAndroid Build Coastguard Worker                        user stack only
943*387f9dfdSAndroid Build Coastguard Worker  -v, --verbose         show raw addresses
944*387f9dfdSAndroid Build Coastguard Worker  -d, --delimited       insert delimiter between kernel/user stacks
945*387f9dfdSAndroid Build Coastguard Worker  -f, --folded          output folded format
946*387f9dfdSAndroid Build Coastguard Worker  --debug               print BPF program before starting (for debugging
947*387f9dfdSAndroid Build Coastguard Worker                        purposes)
948*387f9dfdSAndroid Build Coastguard Worker
949*387f9dfdSAndroid Build Coastguard Workerexamples:
950*387f9dfdSAndroid Build Coastguard Worker    ./stackcount submit_bio         # count kernel stack traces for submit_bio
951*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -d ip_output       # include a user/kernel stack delimiter
952*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -s ip_output       # show symbol offsets
953*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -sv ip_output      # show offsets and raw addresses (verbose)
954*387f9dfdSAndroid Build Coastguard Worker    ./stackcount 'tcp_send*'        # count stacks for funcs matching tcp_send*
955*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -r '^tcp_send.*'   # same as above, using regular expressions
956*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -Ti 5 ip_output    # output every 5 seconds, with timestamps
957*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -p 185 ip_output   # count ip_output stacks for PID 185 only
958*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -p 185 c:malloc    # count stacks for malloc in PID 185
959*387f9dfdSAndroid Build Coastguard Worker    ./stackcount t:sched:sched_fork # count stacks for sched_fork tracepoint
960*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -p 185 u:node:*    # count stacks for all USDT probes in node
961*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -c 1 put_prev_entity   # count put_prev_entity stacks for CPU 1 only
962*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -K t:sched:sched_switch   # kernel stacks only
963*387f9dfdSAndroid Build Coastguard Worker    ./stackcount -U t:sched:sched_switch   # user stacks only
964