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