1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of offcputime, the Linux eBPF/bcc version. 2*387f9dfdSAndroid Build Coastguard Worker 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard WorkerThis program shows stack traces that were blocked, and the total duration they 5*387f9dfdSAndroid Build Coastguard Workerwere blocked. It works by tracing when threads block and when they return to 6*387f9dfdSAndroid Build Coastguard WorkerCPU, measuring both the time they were blocked (aka the "off-CPU time") and the 7*387f9dfdSAndroid Build Coastguard Workerblocked stack trace and the task name. This data is summarized in kernel by 8*387f9dfdSAndroid Build Coastguard Workersumming the blocked time by unique stack trace and task name. 9*387f9dfdSAndroid Build Coastguard Worker 10*387f9dfdSAndroid Build Coastguard WorkerHere is some example output. The -K option was used to only match kernel stacks. 11*387f9dfdSAndroid Build Coastguard WorkerTo explain what we are seeing: the very first stack trace looks like a page 12*387f9dfdSAndroid Build Coastguard Workerfault (do_page_fault() etc) from the "chmod" command, and in total was off-CPU 13*387f9dfdSAndroid Build Coastguard Workerfor 13 microseconds. 14*387f9dfdSAndroid Build Coastguard Worker 15*387f9dfdSAndroid Build Coastguard Worker# ./offcputime -K 16*387f9dfdSAndroid Build Coastguard WorkerTracing off-CPU time (us) of all threads by kernel stack... Hit Ctrl-C to end. 17*387f9dfdSAndroid Build Coastguard Worker^C 18*387f9dfdSAndroid Build Coastguard Worker schedule 19*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 20*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 21*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 22*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 23*387f9dfdSAndroid Build Coastguard Worker wait_on_page_bit_killable 24*387f9dfdSAndroid Build Coastguard Worker __lock_page_or_retry 25*387f9dfdSAndroid Build Coastguard Worker filemap_fault 26*387f9dfdSAndroid Build Coastguard Worker __do_fault 27*387f9dfdSAndroid Build Coastguard Worker handle_mm_fault 28*387f9dfdSAndroid Build Coastguard Worker __do_page_fault 29*387f9dfdSAndroid Build Coastguard Worker do_page_fault 30*387f9dfdSAndroid Build Coastguard Worker page_fault 31*387f9dfdSAndroid Build Coastguard Worker chmod 32*387f9dfdSAndroid Build Coastguard Worker 13 33*387f9dfdSAndroid Build Coastguard Worker 34*387f9dfdSAndroid Build Coastguard Worker schedule 35*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 36*387f9dfdSAndroid Build Coastguard Worker kthread 37*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 38*387f9dfdSAndroid Build Coastguard Worker ddebug_tables 39*387f9dfdSAndroid Build Coastguard Worker rcuos/0 40*387f9dfdSAndroid Build Coastguard Worker 22 41*387f9dfdSAndroid Build Coastguard Worker 42*387f9dfdSAndroid Build Coastguard Worker schedule 43*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 44*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 45*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 46*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit_lock 47*387f9dfdSAndroid Build Coastguard Worker __lock_page 48*387f9dfdSAndroid Build Coastguard Worker lock_page 49*387f9dfdSAndroid Build Coastguard Worker __do_fault 50*387f9dfdSAndroid Build Coastguard Worker handle_mm_fault 51*387f9dfdSAndroid Build Coastguard Worker __do_page_fault 52*387f9dfdSAndroid Build Coastguard Worker do_page_fault 53*387f9dfdSAndroid Build Coastguard Worker page_fault 54*387f9dfdSAndroid Build Coastguard Worker run 55*387f9dfdSAndroid Build Coastguard Worker 27 56*387f9dfdSAndroid Build Coastguard Worker 57*387f9dfdSAndroid Build Coastguard Worker schedule 58*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 59*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 60*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 61*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 62*387f9dfdSAndroid Build Coastguard Worker wait_on_page_bit_killable 63*387f9dfdSAndroid Build Coastguard Worker __lock_page_or_retry 64*387f9dfdSAndroid Build Coastguard Worker filemap_fault 65*387f9dfdSAndroid Build Coastguard Worker __do_fault 66*387f9dfdSAndroid Build Coastguard Worker handle_mm_fault 67*387f9dfdSAndroid Build Coastguard Worker __do_page_fault 68*387f9dfdSAndroid Build Coastguard Worker do_page_fault 69*387f9dfdSAndroid Build Coastguard Worker page_fault 70*387f9dfdSAndroid Build Coastguard Worker clear_user 71*387f9dfdSAndroid Build Coastguard Worker padzero 72*387f9dfdSAndroid Build Coastguard Worker load_elf_binary 73*387f9dfdSAndroid Build Coastguard Worker search_binary_handler 74*387f9dfdSAndroid Build Coastguard Worker load_script 75*387f9dfdSAndroid Build Coastguard Worker search_binary_handler 76*387f9dfdSAndroid Build Coastguard Worker do_execveat_common.isra.27 77*387f9dfdSAndroid Build Coastguard Worker run 78*387f9dfdSAndroid Build Coastguard Worker 28 79*387f9dfdSAndroid Build Coastguard Worker 80*387f9dfdSAndroid Build Coastguard Worker schedule 81*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 82*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 83*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 84*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 85*387f9dfdSAndroid Build Coastguard Worker wait_on_page_bit_killable 86*387f9dfdSAndroid Build Coastguard Worker __lock_page_or_retry 87*387f9dfdSAndroid Build Coastguard Worker filemap_fault 88*387f9dfdSAndroid Build Coastguard Worker __do_fault 89*387f9dfdSAndroid Build Coastguard Worker handle_mm_fault 90*387f9dfdSAndroid Build Coastguard Worker __do_page_fault 91*387f9dfdSAndroid Build Coastguard Worker do_page_fault 92*387f9dfdSAndroid Build Coastguard Worker page_fault 93*387f9dfdSAndroid Build Coastguard Worker run 94*387f9dfdSAndroid Build Coastguard Worker 82 95*387f9dfdSAndroid Build Coastguard Worker 96*387f9dfdSAndroid Build Coastguard Worker schedule 97*387f9dfdSAndroid Build Coastguard Worker pipe_wait 98*387f9dfdSAndroid Build Coastguard Worker pipe_read 99*387f9dfdSAndroid Build Coastguard Worker __vfs_read 100*387f9dfdSAndroid Build Coastguard Worker vfs_read 101*387f9dfdSAndroid Build Coastguard Worker sys_read 102*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 103*387f9dfdSAndroid Build Coastguard Worker bash 104*387f9dfdSAndroid Build Coastguard Worker 94 105*387f9dfdSAndroid Build Coastguard Worker 106*387f9dfdSAndroid Build Coastguard Worker schedule 107*387f9dfdSAndroid Build Coastguard Worker rcu_gp_kthread 108*387f9dfdSAndroid Build Coastguard Worker kthread 109*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 110*387f9dfdSAndroid Build Coastguard Worker ddebug_tables 111*387f9dfdSAndroid Build Coastguard Worker rcu_sched 112*387f9dfdSAndroid Build Coastguard Worker 104 113*387f9dfdSAndroid Build Coastguard Worker 114*387f9dfdSAndroid Build Coastguard Worker schedule 115*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 116*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 117*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 118*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 119*387f9dfdSAndroid Build Coastguard Worker out_of_line_wait_on_bit 120*387f9dfdSAndroid Build Coastguard Worker __wait_on_buffer 121*387f9dfdSAndroid Build Coastguard Worker jbd2_journal_commit_transaction 122*387f9dfdSAndroid Build Coastguard Worker kjournald2 123*387f9dfdSAndroid Build Coastguard Worker kthread 124*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 125*387f9dfdSAndroid Build Coastguard Worker mb_cache_list 126*387f9dfdSAndroid Build Coastguard Worker jbd2/xvda1-8 127*387f9dfdSAndroid Build Coastguard Worker 986 128*387f9dfdSAndroid Build Coastguard Worker 129*387f9dfdSAndroid Build Coastguard Worker schedule 130*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 131*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 132*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 133*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 134*387f9dfdSAndroid Build Coastguard Worker out_of_line_wait_on_bit 135*387f9dfdSAndroid Build Coastguard Worker __wait_on_buffer 136*387f9dfdSAndroid Build Coastguard Worker jbd2_journal_commit_transaction 137*387f9dfdSAndroid Build Coastguard Worker kjournald2 138*387f9dfdSAndroid Build Coastguard Worker kthread 139*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 140*387f9dfdSAndroid Build Coastguard Worker mb_cache_list 141*387f9dfdSAndroid Build Coastguard Worker jbd2/xvda1-8 142*387f9dfdSAndroid Build Coastguard Worker 6630 143*387f9dfdSAndroid Build Coastguard Worker 144*387f9dfdSAndroid Build Coastguard Worker schedule 145*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 146*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 147*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 148*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 149*387f9dfdSAndroid Build Coastguard Worker out_of_line_wait_on_bit 150*387f9dfdSAndroid Build Coastguard Worker do_get_write_access 151*387f9dfdSAndroid Build Coastguard Worker jbd2_journal_get_write_access 152*387f9dfdSAndroid Build Coastguard Worker __ext4_journal_get_write_access 153*387f9dfdSAndroid Build Coastguard Worker ext4_mb_mark_diskspace_used 154*387f9dfdSAndroid Build Coastguard Worker ext4_mb_new_blocks 155*387f9dfdSAndroid Build Coastguard Worker ext4_ext_map_blocks 156*387f9dfdSAndroid Build Coastguard Worker ext4_map_blocks 157*387f9dfdSAndroid Build Coastguard Worker ext4_writepages 158*387f9dfdSAndroid Build Coastguard Worker do_writepages 159*387f9dfdSAndroid Build Coastguard Worker __filemap_fdatawrite_range 160*387f9dfdSAndroid Build Coastguard Worker filemap_flush 161*387f9dfdSAndroid Build Coastguard Worker ext4_alloc_da_blocks 162*387f9dfdSAndroid Build Coastguard Worker ext4_rename 163*387f9dfdSAndroid Build Coastguard Worker ext4_rename2 164*387f9dfdSAndroid Build Coastguard Worker supervise 165*387f9dfdSAndroid Build Coastguard Worker 6645 166*387f9dfdSAndroid Build Coastguard Worker 167*387f9dfdSAndroid Build Coastguard Worker schedule 168*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 169*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 170*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 171*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 172*387f9dfdSAndroid Build Coastguard Worker out_of_line_wait_on_bit 173*387f9dfdSAndroid Build Coastguard Worker do_get_write_access 174*387f9dfdSAndroid Build Coastguard Worker jbd2_journal_get_write_access 175*387f9dfdSAndroid Build Coastguard Worker __ext4_journal_get_write_access 176*387f9dfdSAndroid Build Coastguard Worker __ext4_new_inode 177*387f9dfdSAndroid Build Coastguard Worker ext4_create 178*387f9dfdSAndroid Build Coastguard Worker vfs_create 179*387f9dfdSAndroid Build Coastguard Worker path_openat 180*387f9dfdSAndroid Build Coastguard Worker do_filp_open 181*387f9dfdSAndroid Build Coastguard Worker do_sys_open 182*387f9dfdSAndroid Build Coastguard Worker sys_open 183*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 184*387f9dfdSAndroid Build Coastguard Worker supervise 185*387f9dfdSAndroid Build Coastguard Worker 12702 186*387f9dfdSAndroid Build Coastguard Worker 187*387f9dfdSAndroid Build Coastguard Worker schedule 188*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 189*387f9dfdSAndroid Build Coastguard Worker kthread 190*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 191*387f9dfdSAndroid Build Coastguard Worker rcuos/2 192*387f9dfdSAndroid Build Coastguard Worker 16036 193*387f9dfdSAndroid Build Coastguard Worker 194*387f9dfdSAndroid Build Coastguard Worker schedule 195*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 196*387f9dfdSAndroid Build Coastguard Worker kthread 197*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 198*387f9dfdSAndroid Build Coastguard Worker rcuos/4 199*387f9dfdSAndroid Build Coastguard Worker 24085 200*387f9dfdSAndroid Build Coastguard Worker 201*387f9dfdSAndroid Build Coastguard Worker schedule 202*387f9dfdSAndroid Build Coastguard Worker do_wait 203*387f9dfdSAndroid Build Coastguard Worker sys_wait4 204*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 205*387f9dfdSAndroid Build Coastguard Worker run 206*387f9dfdSAndroid Build Coastguard Worker 233055 207*387f9dfdSAndroid Build Coastguard Worker 208*387f9dfdSAndroid Build Coastguard Worker schedule 209*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 210*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 211*387f9dfdSAndroid Build Coastguard Worker bit_wait_io 212*387f9dfdSAndroid Build Coastguard Worker __wait_on_bit 213*387f9dfdSAndroid Build Coastguard Worker wait_on_page_bit 214*387f9dfdSAndroid Build Coastguard Worker truncate_inode_pages_range 215*387f9dfdSAndroid Build Coastguard Worker truncate_inode_pages_final 216*387f9dfdSAndroid Build Coastguard Worker ext4_evict_inode 217*387f9dfdSAndroid Build Coastguard Worker evict 218*387f9dfdSAndroid Build Coastguard Worker iput 219*387f9dfdSAndroid Build Coastguard Worker __dentry_kill 220*387f9dfdSAndroid Build Coastguard Worker dput 221*387f9dfdSAndroid Build Coastguard Worker sys_rename 222*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 223*387f9dfdSAndroid Build Coastguard Worker supervise 224*387f9dfdSAndroid Build Coastguard Worker 297113 225*387f9dfdSAndroid Build Coastguard Worker 226*387f9dfdSAndroid Build Coastguard Worker schedule 227*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 228*387f9dfdSAndroid Build Coastguard Worker wait_woken 229*387f9dfdSAndroid Build Coastguard Worker n_tty_read 230*387f9dfdSAndroid Build Coastguard Worker tty_read 231*387f9dfdSAndroid Build Coastguard Worker __vfs_read 232*387f9dfdSAndroid Build Coastguard Worker vfs_read 233*387f9dfdSAndroid Build Coastguard Worker sys_read 234*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 235*387f9dfdSAndroid Build Coastguard Worker bash 236*387f9dfdSAndroid Build Coastguard Worker 1789866 237*387f9dfdSAndroid Build Coastguard Worker 238*387f9dfdSAndroid Build Coastguard Worker schedule 239*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 240*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 241*387f9dfdSAndroid Build Coastguard Worker do_blockdev_direct_IO 242*387f9dfdSAndroid Build Coastguard Worker __blockdev_direct_IO 243*387f9dfdSAndroid Build Coastguard Worker blkdev_direct_IO 244*387f9dfdSAndroid Build Coastguard Worker generic_file_read_iter 245*387f9dfdSAndroid Build Coastguard Worker blkdev_read_iter 246*387f9dfdSAndroid Build Coastguard Worker __vfs_read 247*387f9dfdSAndroid Build Coastguard Worker vfs_read 248*387f9dfdSAndroid Build Coastguard Worker sys_read 249*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 250*387f9dfdSAndroid Build Coastguard Worker dd 251*387f9dfdSAndroid Build Coastguard Worker 3310763 252*387f9dfdSAndroid Build Coastguard Worker 253*387f9dfdSAndroid Build Coastguard Worker schedule 254*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 255*387f9dfdSAndroid Build Coastguard Worker kthread 256*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 257*387f9dfdSAndroid Build Coastguard Worker watchdog/1 258*387f9dfdSAndroid Build Coastguard Worker 3999989 259*387f9dfdSAndroid Build Coastguard Worker 260*387f9dfdSAndroid Build Coastguard Worker schedule 261*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 262*387f9dfdSAndroid Build Coastguard Worker kthread 263*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 264*387f9dfdSAndroid Build Coastguard Worker watchdog/5 265*387f9dfdSAndroid Build Coastguard Worker 3999995 266*387f9dfdSAndroid Build Coastguard Worker 267*387f9dfdSAndroid Build Coastguard Worker schedule 268*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 269*387f9dfdSAndroid Build Coastguard Worker kthread 270*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 271*387f9dfdSAndroid Build Coastguard Worker watchdog/4 272*387f9dfdSAndroid Build Coastguard Worker 3999996 273*387f9dfdSAndroid Build Coastguard Worker 274*387f9dfdSAndroid Build Coastguard Worker schedule 275*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 276*387f9dfdSAndroid Build Coastguard Worker kthread 277*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 278*387f9dfdSAndroid Build Coastguard Worker watchdog/0 279*387f9dfdSAndroid Build Coastguard Worker 3999996 280*387f9dfdSAndroid Build Coastguard Worker 281*387f9dfdSAndroid Build Coastguard Worker schedule 282*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 283*387f9dfdSAndroid Build Coastguard Worker kthread 284*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 285*387f9dfdSAndroid Build Coastguard Worker watchdog/3 286*387f9dfdSAndroid Build Coastguard Worker 3999998 287*387f9dfdSAndroid Build Coastguard Worker 288*387f9dfdSAndroid Build Coastguard Worker schedule 289*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 290*387f9dfdSAndroid Build Coastguard Worker kthread 291*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 292*387f9dfdSAndroid Build Coastguard Worker watchdog/7 293*387f9dfdSAndroid Build Coastguard Worker 3999999 294*387f9dfdSAndroid Build Coastguard Worker 295*387f9dfdSAndroid Build Coastguard Worker schedule 296*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 297*387f9dfdSAndroid Build Coastguard Worker kthread 298*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 299*387f9dfdSAndroid Build Coastguard Worker watchdog/2 300*387f9dfdSAndroid Build Coastguard Worker 4000001 301*387f9dfdSAndroid Build Coastguard Worker 302*387f9dfdSAndroid Build Coastguard Worker schedule 303*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 304*387f9dfdSAndroid Build Coastguard Worker kthread 305*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 306*387f9dfdSAndroid Build Coastguard Worker watchdog/6 307*387f9dfdSAndroid Build Coastguard Worker 4000001 308*387f9dfdSAndroid Build Coastguard Worker 309*387f9dfdSAndroid Build Coastguard Worker schedule 310*387f9dfdSAndroid Build Coastguard Worker do_wait 311*387f9dfdSAndroid Build Coastguard Worker sys_wait4 312*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 313*387f9dfdSAndroid Build Coastguard Worker bash 314*387f9dfdSAndroid Build Coastguard Worker 4039675 315*387f9dfdSAndroid Build Coastguard Worker 316*387f9dfdSAndroid Build Coastguard Worker schedule 317*387f9dfdSAndroid Build Coastguard Worker do_nanosleep 318*387f9dfdSAndroid Build Coastguard Worker hrtimer_nanosleep 319*387f9dfdSAndroid Build Coastguard Worker sys_nanosleep 320*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 321*387f9dfdSAndroid Build Coastguard Worker svscan 322*387f9dfdSAndroid Build Coastguard Worker 5000112 323*387f9dfdSAndroid Build Coastguard Worker 324*387f9dfdSAndroid Build Coastguard Worker schedule 325*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range_clock 326*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range 327*387f9dfdSAndroid Build Coastguard Worker poll_schedule_timeout 328*387f9dfdSAndroid Build Coastguard Worker do_select 329*387f9dfdSAndroid Build Coastguard Worker core_sys_select 330*387f9dfdSAndroid Build Coastguard Worker sys_select 331*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 332*387f9dfdSAndroid Build Coastguard Worker snmpd 333*387f9dfdSAndroid Build Coastguard Worker 5998761 334*387f9dfdSAndroid Build Coastguard Worker 335*387f9dfdSAndroid Build Coastguard Worker schedule 336*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 337*387f9dfdSAndroid Build Coastguard Worker kthread 338*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 339*387f9dfdSAndroid Build Coastguard Worker migration/3 340*387f9dfdSAndroid Build Coastguard Worker 6149779 341*387f9dfdSAndroid Build Coastguard Worker 342*387f9dfdSAndroid Build Coastguard Worker schedule 343*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range_clock 344*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range 345*387f9dfdSAndroid Build Coastguard Worker poll_schedule_timeout 346*387f9dfdSAndroid Build Coastguard Worker do_select 347*387f9dfdSAndroid Build Coastguard Worker core_sys_select 348*387f9dfdSAndroid Build Coastguard Worker sys_select 349*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 350*387f9dfdSAndroid Build Coastguard Worker ntpd 351*387f9dfdSAndroid Build Coastguard Worker 6999832 352*387f9dfdSAndroid Build Coastguard Worker 353*387f9dfdSAndroid Build Coastguard Worker schedule 354*387f9dfdSAndroid Build Coastguard Worker worker_thread 355*387f9dfdSAndroid Build Coastguard Worker kthread 356*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 357*387f9dfdSAndroid Build Coastguard Worker kworker/u16:2 358*387f9dfdSAndroid Build Coastguard Worker 7131941 359*387f9dfdSAndroid Build Coastguard Worker 360*387f9dfdSAndroid Build Coastguard Worker schedule 361*387f9dfdSAndroid Build Coastguard Worker worker_thread 362*387f9dfdSAndroid Build Coastguard Worker kthread 363*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 364*387f9dfdSAndroid Build Coastguard Worker kworker/3:0 365*387f9dfdSAndroid Build Coastguard Worker 7999844 366*387f9dfdSAndroid Build Coastguard Worker 367*387f9dfdSAndroid Build Coastguard Worker schedule 368*387f9dfdSAndroid Build Coastguard Worker worker_thread 369*387f9dfdSAndroid Build Coastguard Worker kthread 370*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 371*387f9dfdSAndroid Build Coastguard Worker kworker/1:1 372*387f9dfdSAndroid Build Coastguard Worker 7999872 373*387f9dfdSAndroid Build Coastguard Worker 374*387f9dfdSAndroid Build Coastguard Worker schedule 375*387f9dfdSAndroid Build Coastguard Worker worker_thread 376*387f9dfdSAndroid Build Coastguard Worker kthread 377*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 378*387f9dfdSAndroid Build Coastguard Worker kworker/2:1 379*387f9dfdSAndroid Build Coastguard Worker 7999889 380*387f9dfdSAndroid Build Coastguard Worker 381*387f9dfdSAndroid Build Coastguard Worker schedule 382*387f9dfdSAndroid Build Coastguard Worker worker_thread 383*387f9dfdSAndroid Build Coastguard Worker kthread 384*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 385*387f9dfdSAndroid Build Coastguard Worker kworker/5:1 386*387f9dfdSAndroid Build Coastguard Worker 7999936 387*387f9dfdSAndroid Build Coastguard Worker 388*387f9dfdSAndroid Build Coastguard Worker schedule 389*387f9dfdSAndroid Build Coastguard Worker worker_thread 390*387f9dfdSAndroid Build Coastguard Worker kthread 391*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 392*387f9dfdSAndroid Build Coastguard Worker kworker/7:1 393*387f9dfdSAndroid Build Coastguard Worker 7999938 394*387f9dfdSAndroid Build Coastguard Worker 395*387f9dfdSAndroid Build Coastguard Worker schedule 396*387f9dfdSAndroid Build Coastguard Worker worker_thread 397*387f9dfdSAndroid Build Coastguard Worker kthread 398*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 399*387f9dfdSAndroid Build Coastguard Worker kworker/6:1 400*387f9dfdSAndroid Build Coastguard Worker 7999940 401*387f9dfdSAndroid Build Coastguard Worker 402*387f9dfdSAndroid Build Coastguard Worker schedule 403*387f9dfdSAndroid Build Coastguard Worker do_nanosleep 404*387f9dfdSAndroid Build Coastguard Worker hrtimer_nanosleep 405*387f9dfdSAndroid Build Coastguard Worker sys_nanosleep 406*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 407*387f9dfdSAndroid Build Coastguard Worker tail 408*387f9dfdSAndroid Build Coastguard Worker 8000905 409*387f9dfdSAndroid Build Coastguard Worker 410*387f9dfdSAndroid Build Coastguard Worker schedule 411*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 412*387f9dfdSAndroid Build Coastguard Worker kthread 413*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 414*387f9dfdSAndroid Build Coastguard Worker migration/7 415*387f9dfdSAndroid Build Coastguard Worker 8197046 416*387f9dfdSAndroid Build Coastguard Worker 417*387f9dfdSAndroid Build Coastguard Worker schedule 418*387f9dfdSAndroid Build Coastguard Worker pipe_wait 419*387f9dfdSAndroid Build Coastguard Worker pipe_read 420*387f9dfdSAndroid Build Coastguard Worker __vfs_read 421*387f9dfdSAndroid Build Coastguard Worker vfs_read 422*387f9dfdSAndroid Build Coastguard Worker sys_read 423*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 424*387f9dfdSAndroid Build Coastguard Worker readproctitle 425*387f9dfdSAndroid Build Coastguard Worker 8197835 426*387f9dfdSAndroid Build Coastguard Worker 427*387f9dfdSAndroid Build Coastguard Worker schedule 428*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 429*387f9dfdSAndroid Build Coastguard Worker kthread 430*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 431*387f9dfdSAndroid Build Coastguard Worker migration/4 432*387f9dfdSAndroid Build Coastguard Worker 8201851 433*387f9dfdSAndroid Build Coastguard Worker 434*387f9dfdSAndroid Build Coastguard Worker schedule 435*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 436*387f9dfdSAndroid Build Coastguard Worker kthread 437*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 438*387f9dfdSAndroid Build Coastguard Worker migration/2 439*387f9dfdSAndroid Build Coastguard Worker 8203375 440*387f9dfdSAndroid Build Coastguard Worker 441*387f9dfdSAndroid Build Coastguard Worker schedule 442*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 443*387f9dfdSAndroid Build Coastguard Worker kthread 444*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 445*387f9dfdSAndroid Build Coastguard Worker migration/6 446*387f9dfdSAndroid Build Coastguard Worker 8208664 447*387f9dfdSAndroid Build Coastguard Worker 448*387f9dfdSAndroid Build Coastguard Worker schedule 449*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 450*387f9dfdSAndroid Build Coastguard Worker kthread 451*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 452*387f9dfdSAndroid Build Coastguard Worker migration/5 453*387f9dfdSAndroid Build Coastguard Worker 8209819 454*387f9dfdSAndroid Build Coastguard Worker 455*387f9dfdSAndroid Build Coastguard Worker schedule 456*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 457*387f9dfdSAndroid Build Coastguard Worker kthread 458*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 459*387f9dfdSAndroid Build Coastguard Worker ddebug_tables 460*387f9dfdSAndroid Build Coastguard Worker migration/0 461*387f9dfdSAndroid Build Coastguard Worker 8211292 462*387f9dfdSAndroid Build Coastguard Worker 463*387f9dfdSAndroid Build Coastguard Worker schedule 464*387f9dfdSAndroid Build Coastguard Worker smpboot_thread_fn 465*387f9dfdSAndroid Build Coastguard Worker kthread 466*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 467*387f9dfdSAndroid Build Coastguard Worker migration/1 468*387f9dfdSAndroid Build Coastguard Worker 8212100 469*387f9dfdSAndroid Build Coastguard Worker 470*387f9dfdSAndroid Build Coastguard Worker schedule 471*387f9dfdSAndroid Build Coastguard Worker worker_thread 472*387f9dfdSAndroid Build Coastguard Worker kthread 473*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 474*387f9dfdSAndroid Build Coastguard Worker kworker/0:2 475*387f9dfdSAndroid Build Coastguard Worker 8270305 476*387f9dfdSAndroid Build Coastguard Worker 477*387f9dfdSAndroid Build Coastguard Worker schedule 478*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 479*387f9dfdSAndroid Build Coastguard Worker kthread 480*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 481*387f9dfdSAndroid Build Coastguard Worker rcuos/3 482*387f9dfdSAndroid Build Coastguard Worker 8349697 483*387f9dfdSAndroid Build Coastguard Worker 484*387f9dfdSAndroid Build Coastguard Worker schedule 485*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 486*387f9dfdSAndroid Build Coastguard Worker kthread 487*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 488*387f9dfdSAndroid Build Coastguard Worker rcuos/2 489*387f9dfdSAndroid Build Coastguard Worker 8363357 490*387f9dfdSAndroid Build Coastguard Worker 491*387f9dfdSAndroid Build Coastguard Worker schedule 492*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 493*387f9dfdSAndroid Build Coastguard Worker kthread 494*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 495*387f9dfdSAndroid Build Coastguard Worker rcuos/1 496*387f9dfdSAndroid Build Coastguard Worker 8365338 497*387f9dfdSAndroid Build Coastguard Worker 498*387f9dfdSAndroid Build Coastguard Worker schedule 499*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 500*387f9dfdSAndroid Build Coastguard Worker xfs_buf_terminate 501*387f9dfdSAndroid Build Coastguard Worker kthread 502*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 503*387f9dfdSAndroid Build Coastguard Worker xfsaild/md0 504*387f9dfdSAndroid Build Coastguard Worker 8371514 505*387f9dfdSAndroid Build Coastguard Worker 506*387f9dfdSAndroid Build Coastguard Worker schedule 507*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 508*387f9dfdSAndroid Build Coastguard Worker kthread 509*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 510*387f9dfdSAndroid Build Coastguard Worker rcuos/4 511*387f9dfdSAndroid Build Coastguard Worker 8384013 512*387f9dfdSAndroid Build Coastguard Worker 513*387f9dfdSAndroid Build Coastguard Worker schedule 514*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 515*387f9dfdSAndroid Build Coastguard Worker kthread 516*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 517*387f9dfdSAndroid Build Coastguard Worker rcuos/5 518*387f9dfdSAndroid Build Coastguard Worker 8390016 519*387f9dfdSAndroid Build Coastguard Worker 520*387f9dfdSAndroid Build Coastguard Worker schedule 521*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 522*387f9dfdSAndroid Build Coastguard Worker kthread 523*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 524*387f9dfdSAndroid Build Coastguard Worker ddebug_tables 525*387f9dfdSAndroid Build Coastguard Worker rcuos/0 526*387f9dfdSAndroid Build Coastguard Worker 8405428 527*387f9dfdSAndroid Build Coastguard Worker 528*387f9dfdSAndroid Build Coastguard Worker schedule 529*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 530*387f9dfdSAndroid Build Coastguard Worker rcu_gp_kthread 531*387f9dfdSAndroid Build Coastguard Worker kthread 532*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 533*387f9dfdSAndroid Build Coastguard Worker ddebug_tables 534*387f9dfdSAndroid Build Coastguard Worker rcu_sched 535*387f9dfdSAndroid Build Coastguard Worker 8406930 536*387f9dfdSAndroid Build Coastguard Worker 537*387f9dfdSAndroid Build Coastguard Worker schedule 538*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 539*387f9dfdSAndroid Build Coastguard Worker kthread 540*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 541*387f9dfdSAndroid Build Coastguard Worker rcuos/7 542*387f9dfdSAndroid Build Coastguard Worker 8409575 543*387f9dfdSAndroid Build Coastguard Worker 544*387f9dfdSAndroid Build Coastguard Worker schedule 545*387f9dfdSAndroid Build Coastguard Worker rcu_nocb_kthread 546*387f9dfdSAndroid Build Coastguard Worker kthread 547*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 548*387f9dfdSAndroid Build Coastguard Worker rcuos/6 549*387f9dfdSAndroid Build Coastguard Worker 8415062 550*387f9dfdSAndroid Build Coastguard Worker 551*387f9dfdSAndroid Build Coastguard Worker schedule 552*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range_clock 553*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range 554*387f9dfdSAndroid Build Coastguard Worker poll_schedule_timeout 555*387f9dfdSAndroid Build Coastguard Worker do_select 556*387f9dfdSAndroid Build Coastguard Worker core_sys_select 557*387f9dfdSAndroid Build Coastguard Worker sys_select 558*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 559*387f9dfdSAndroid Build Coastguard Worker offcputime 560*387f9dfdSAndroid Build Coastguard Worker 8421478 561*387f9dfdSAndroid Build Coastguard Worker 562*387f9dfdSAndroid Build Coastguard Worker schedule 563*387f9dfdSAndroid Build Coastguard Worker worker_thread 564*387f9dfdSAndroid Build Coastguard Worker kthread 565*387f9dfdSAndroid Build Coastguard Worker ret_from_fork 566*387f9dfdSAndroid Build Coastguard Worker kworker/4:0 567*387f9dfdSAndroid Build Coastguard Worker 8421492 568*387f9dfdSAndroid Build Coastguard Worker 569*387f9dfdSAndroid Build Coastguard Worker schedule 570*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range_clock 571*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range 572*387f9dfdSAndroid Build Coastguard Worker poll_schedule_timeout 573*387f9dfdSAndroid Build Coastguard Worker do_select 574*387f9dfdSAndroid Build Coastguard Worker core_sys_select 575*387f9dfdSAndroid Build Coastguard Worker sys_select 576*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 577*387f9dfdSAndroid Build Coastguard Worker sshd 578*387f9dfdSAndroid Build Coastguard Worker 14249005 579*387f9dfdSAndroid Build Coastguard Worker 580*387f9dfdSAndroid Build Coastguard Worker schedule 581*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range_clock 582*387f9dfdSAndroid Build Coastguard Worker schedule_hrtimeout_range 583*387f9dfdSAndroid Build Coastguard Worker poll_schedule_timeout 584*387f9dfdSAndroid Build Coastguard Worker do_sys_poll 585*387f9dfdSAndroid Build Coastguard Worker sys_poll 586*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 587*387f9dfdSAndroid Build Coastguard Worker supervise 588*387f9dfdSAndroid Build Coastguard Worker 81670888 589*387f9dfdSAndroid Build Coastguard Worker 590*387f9dfdSAndroid Build Coastguard WorkerThe last few stack traces aren't very interesting, since they are threads that 591*387f9dfdSAndroid Build Coastguard Workerare often blocked off-CPU waiting for work. 592*387f9dfdSAndroid Build Coastguard Worker 593*387f9dfdSAndroid Build Coastguard WorkerDo be somewhat careful with overhead: this is tracing scheduler functions, which 594*387f9dfdSAndroid Build Coastguard Workercan be called very frequently. While this uses in-kernel summaries for 595*387f9dfdSAndroid Build Coastguard Workerefficiency, the rate of scheduler functions can be very high (> 1,000,000/sec), 596*387f9dfdSAndroid Build Coastguard Workerand this is performing stack walks when threads return to CPU. At some point 597*387f9dfdSAndroid Build Coastguard Workerthe overhead will be measurable. 598*387f9dfdSAndroid Build Coastguard Worker 599*387f9dfdSAndroid Build Coastguard Worker 600*387f9dfdSAndroid Build Coastguard WorkerA -p option can be used to filter (in-kernel) on a single process ID. For 601*387f9dfdSAndroid Build Coastguard Workerexample, only matching PID 26651, which is a running "dd" command: 602*387f9dfdSAndroid Build Coastguard Worker 603*387f9dfdSAndroid Build Coastguard Worker# ./offcputime -K -p 26651 604*387f9dfdSAndroid Build Coastguard WorkerTracing off-CPU time (us) of all threads by kernel stack... Hit Ctrl-C to end. 605*387f9dfdSAndroid Build Coastguard Worker^C 606*387f9dfdSAndroid Build Coastguard Worker schedule 607*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 608*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 609*387f9dfdSAndroid Build Coastguard Worker do_blockdev_direct_IO 610*387f9dfdSAndroid Build Coastguard Worker __blockdev_direct_IO 611*387f9dfdSAndroid Build Coastguard Worker blkdev_direct_IO 612*387f9dfdSAndroid Build Coastguard Worker generic_file_read_iter 613*387f9dfdSAndroid Build Coastguard Worker blkdev_read_iter 614*387f9dfdSAndroid Build Coastguard Worker __vfs_read 615*387f9dfdSAndroid Build Coastguard Worker vfs_read 616*387f9dfdSAndroid Build Coastguard Worker sys_read 617*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 618*387f9dfdSAndroid Build Coastguard Worker dd 619*387f9dfdSAndroid Build Coastguard Worker 2405710 620*387f9dfdSAndroid Build Coastguard Worker 621*387f9dfdSAndroid Build Coastguard WorkerThe stack trace shows "dd" is blocked waiting on disk I/O, as expected, for a 622*387f9dfdSAndroid Build Coastguard Workertotal of 2.4 seconds during tracing. 623*387f9dfdSAndroid Build Coastguard Worker 624*387f9dfdSAndroid Build Coastguard Worker 625*387f9dfdSAndroid Build Coastguard WorkerA duration can be added, for example, tracing for 5 seconds only: 626*387f9dfdSAndroid Build Coastguard Worker 627*387f9dfdSAndroid Build Coastguard Worker# ./offcputime -K -p 26651 5 628*387f9dfdSAndroid Build Coastguard WorkerTracing off-CPU time (us) of all threads by kernel stack for 5 secs. 629*387f9dfdSAndroid Build Coastguard Worker 630*387f9dfdSAndroid Build Coastguard Worker schedule 631*387f9dfdSAndroid Build Coastguard Worker schedule_timeout 632*387f9dfdSAndroid Build Coastguard Worker io_schedule_timeout 633*387f9dfdSAndroid Build Coastguard Worker do_blockdev_direct_IO 634*387f9dfdSAndroid Build Coastguard Worker __blockdev_direct_IO 635*387f9dfdSAndroid Build Coastguard Worker blkdev_direct_IO 636*387f9dfdSAndroid Build Coastguard Worker generic_file_read_iter 637*387f9dfdSAndroid Build Coastguard Worker blkdev_read_iter 638*387f9dfdSAndroid Build Coastguard Worker __vfs_read 639*387f9dfdSAndroid Build Coastguard Worker vfs_read 640*387f9dfdSAndroid Build Coastguard Worker sys_read 641*387f9dfdSAndroid Build Coastguard Worker entry_SYSCALL_64_fastpath 642*387f9dfdSAndroid Build Coastguard Worker dd 643*387f9dfdSAndroid Build Coastguard Worker 4413909 644*387f9dfdSAndroid Build Coastguard Worker 645*387f9dfdSAndroid Build Coastguard WorkerHere, dd was blocked for 4.4 seconds out of 5. Or put differently, likely 646*387f9dfdSAndroid Build Coastguard Workeron-CPU for about 12% of the time. Which matches the ratio seen by time(1): 647*387f9dfdSAndroid Build Coastguard Worker 648*387f9dfdSAndroid Build Coastguard Worker# time dd if=/dev/md0 iflag=direct of=/dev/null bs=1k 649*387f9dfdSAndroid Build Coastguard Worker^C108115+0 records in 650*387f9dfdSAndroid Build Coastguard Worker108114+0 records out 651*387f9dfdSAndroid Build Coastguard Worker110708736 bytes (111 MB) copied, 13.7565 s, 8.0 MB/s 652*387f9dfdSAndroid Build Coastguard Worker 653*387f9dfdSAndroid Build Coastguard Workerreal 0m13.760s 654*387f9dfdSAndroid Build Coastguard Workeruser 0m0.000s 655*387f9dfdSAndroid Build Coastguard Workersys 0m1.739s 656*387f9dfdSAndroid Build Coastguard Worker 657*387f9dfdSAndroid Build Coastguard Worker 658*387f9dfdSAndroid Build Coastguard WorkerA -f option will emit output using the "folded stacks" format, which can be 659*387f9dfdSAndroid Build Coastguard Workerread directly by flamegraph.pl from the FlameGraph open source software 660*387f9dfdSAndroid Build Coastguard Worker(https://github.com/brendangregg/FlameGraph). Eg: 661*387f9dfdSAndroid Build Coastguard Worker 662*387f9dfdSAndroid Build Coastguard Worker# ./offcputime -K -f 5 663*387f9dfdSAndroid Build Coastguard Workerbash;entry_SYSCALL_64_fastpath;sys_read;vfs_read;__vfs_read;tty_read;n_tty_read;call_rwsem_down_read_failed;rwsem_down_read_failed;schedule 8 664*387f9dfdSAndroid Build Coastguard Workeryes;entry_SYSCALL_64_fastpath;sys_write;vfs_write;__vfs_write;tty_write;n_tty_write;call_rwsem_down_read_failed;rwsem_down_read_failed;schedule 14 665*387f9dfdSAndroid Build Coastguard Workerrun;page_fault;do_page_fault;__do_page_fault;handle_mm_fault;__do_fault;filemap_fault;__lock_page_or_retry;wait_on_page_bit_killable;__wait_on_bit;bit_wait_io;io_schedule_timeout;schedule_timeout;schedule 33 666*387f9dfdSAndroid Build Coastguard Workerrcuos/4;ret_from_fork;kthread;rcu_nocb_kthread;schedule 45 667*387f9dfdSAndroid Build Coastguard Workerbash;entry_SYSCALL_64_fastpath;sys_read;vfs_read;__vfs_read;pipe_read;pipe_wait;schedule 88 668*387f9dfdSAndroid Build Coastguard Workerrun;page_fault;do_page_fault;__do_page_fault;handle_mm_fault;__do_fault;filemap_fault;__lock_page_or_retry;wait_on_page_bit_killable;__wait_on_bit;bit_wait_io;io_schedule_timeout;schedule_timeout;schedule 108 669*387f9dfdSAndroid Build Coastguard Workerjbd2/xvda1-8;mb_cache_list;ret_from_fork;kthread;kjournald2;jbd2_journal_commit_transaction;__wait_on_buffer;out_of_line_wait_on_bit;__wait_on_bit;bit_wait_io;io_schedule_timeout;schedule_timeout;schedule 828 670*387f9dfdSAndroid Build Coastguard Workerjbd2/xvda1-8;mb_cache_list;ret_from_fork;kthread;kjournald2;jbd2_journal_commit_transaction;__wait_on_buffer;out_of_line_wait_on_bit;__wait_on_bit;bit_wait_io;io_schedule_timeout;schedule_timeout;schedule 6201 671*387f9dfdSAndroid Build Coastguard Workersupervise;entry_SYSCALL_64_fastpath;sys_rename;dput;__dentry_kill;iput;evict;ext4_evict_inode;truncate_inode_pages_final;truncate_inode_pages_range;wait_on_page_bit;__wait_on_bit;bit_wait_io;io_schedule_timeout;schedule_timeout;schedule 41049 672*387f9dfdSAndroid Build Coastguard Workerrun;entry_SYSCALL_64_fastpath;sys_wait4;do_wait;schedule 120709 673*387f9dfdSAndroid Build Coastguard Workerbash;entry_SYSCALL_64_fastpath;sys_wait4;do_wait;schedule 699320 674*387f9dfdSAndroid Build Coastguard Workerksoftirqd/0;ret_from_fork;kthread;smpboot_thread_fn;schedule 1077529 675*387f9dfdSAndroid Build Coastguard Workerbash;entry_SYSCALL_64_fastpath;sys_read;vfs_read;__vfs_read;tty_read;n_tty_read;wait_woken;schedule_timeout;schedule 1362045 676*387f9dfdSAndroid Build Coastguard Workersshd;entry_SYSCALL_64_fastpath;sys_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule 1377627 677*387f9dfdSAndroid Build Coastguard Workermigration/0;ddebug_tables;ret_from_fork;kthread;smpboot_thread_fn;schedule 2040753 678*387f9dfdSAndroid Build Coastguard Workersnmpd;entry_SYSCALL_64_fastpath;sys_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule 2197568 679*387f9dfdSAndroid Build Coastguard Workermigration/5;ret_from_fork;kthread;smpboot_thread_fn;schedule 3079426 680*387f9dfdSAndroid Build Coastguard Workermigration/7;ret_from_fork;kthread;smpboot_thread_fn;schedule 3084746 681*387f9dfdSAndroid Build Coastguard Workerkworker/6:2;ret_from_fork;kthread;worker_thread;schedule 3940583 682*387f9dfdSAndroid Build Coastguard Workerkworker/5:1;ret_from_fork;kthread;worker_thread;schedule 3944892 683*387f9dfdSAndroid Build Coastguard Workerkworker/1:2;ret_from_fork;kthread;worker_thread;schedule 3999646 684*387f9dfdSAndroid Build Coastguard Workerntpd;entry_SYSCALL_64_fastpath;sys_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule 3999904 685*387f9dfdSAndroid Build Coastguard Workerkworker/u16:0;ret_from_fork;kthread;worker_thread;schedule 3999967 686*387f9dfdSAndroid Build Coastguard Workerkworker/7:0;ret_from_fork;kthread;worker_thread;schedule 3999987 687*387f9dfdSAndroid Build Coastguard Workertail;entry_SYSCALL_64_fastpath;sys_nanosleep;hrtimer_nanosleep;do_nanosleep;schedule 4000473 688*387f9dfdSAndroid Build Coastguard Workermigration/1;ret_from_fork;kthread;smpboot_thread_fn;schedule 4091150 689*387f9dfdSAndroid Build Coastguard Workermigration/4;ret_from_fork;kthread;smpboot_thread_fn;schedule 4095217 690*387f9dfdSAndroid Build Coastguard Workerreadproctitle;entry_SYSCALL_64_fastpath;sys_read;vfs_read;__vfs_read;pipe_read;pipe_wait;schedule 4108470 691*387f9dfdSAndroid Build Coastguard Workermigration/3;ret_from_fork;kthread;smpboot_thread_fn;schedule 4109264 692*387f9dfdSAndroid Build Coastguard Workermigration/2;ret_from_fork;kthread;smpboot_thread_fn;schedule 4109280 693*387f9dfdSAndroid Build Coastguard Workermigration/6;ret_from_fork;kthread;smpboot_thread_fn;schedule 4111143 694*387f9dfdSAndroid Build Coastguard Workerkworker/4:0;ret_from_fork;kthread;worker_thread;schedule 4402350 695*387f9dfdSAndroid Build Coastguard Workerkworker/3:0;ret_from_fork;kthread;worker_thread;schedule 4433988 696*387f9dfdSAndroid Build Coastguard Workerkworker/2:1;ret_from_fork;kthread;worker_thread;schedule 4636142 697*387f9dfdSAndroid Build Coastguard Workerkworker/0:2;ret_from_fork;kthread;worker_thread;schedule 4832023 698*387f9dfdSAndroid Build Coastguard Workerrcuos/1;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4974186 699*387f9dfdSAndroid Build Coastguard Workerrcuos/5;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4977137 700*387f9dfdSAndroid Build Coastguard Workerrcuos/6;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4987769 701*387f9dfdSAndroid Build Coastguard Workerrcuos/3;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4992282 702*387f9dfdSAndroid Build Coastguard Workerrcuos/4;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4992364 703*387f9dfdSAndroid Build Coastguard Workerrcuos/2;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4992714 704*387f9dfdSAndroid Build Coastguard Workerrcuos/0;ddebug_tables;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4996504 705*387f9dfdSAndroid Build Coastguard Workerrcuos/7;ret_from_fork;kthread;rcu_nocb_kthread;schedule 4998497 706*387f9dfdSAndroid Build Coastguard Workerrcu_sched;ddebug_tables;ret_from_fork;kthread;rcu_gp_kthread;schedule_timeout;schedule 5000686 707*387f9dfdSAndroid Build Coastguard Workeroffcputime;entry_SYSCALL_64_fastpath;sys_select;core_sys_select;do_select;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule 5005063 708*387f9dfdSAndroid Build Coastguard Workerdd;entry_SYSCALL_64_fastpath;sys_read;vfs_read;__vfs_read;blkdev_read_iter;generic_file_read_iter;blkdev_direct_IO;__blockdev_direct_IO;do_blockdev_direct_IO;io_schedule_timeout;schedule_timeout;schedule 8025599 709*387f9dfdSAndroid Build Coastguard Workersupervise;entry_SYSCALL_64_fastpath;sys_poll;do_sys_poll;poll_schedule_timeout;schedule_hrtimeout_range;schedule_hrtimeout_range_clock;schedule 40835611 710*387f9dfdSAndroid Build Coastguard Worker 711*387f9dfdSAndroid Build Coastguard WorkerThe stack traces are shown as single lines, with functions separated by 712*387f9dfdSAndroid Build Coastguard Workersemicolons. The first entry is the task name. The 2nd column is the total 713*387f9dfdSAndroid Build Coastguard Workeroff-CPU time. 714*387f9dfdSAndroid Build Coastguard Worker 715*387f9dfdSAndroid Build Coastguard WorkerI'd save this output to a file, then move it to the system where you'll be 716*387f9dfdSAndroid Build Coastguard Workercreating your "off-CPU time flame graphs". 717*387f9dfdSAndroid Build Coastguard Worker 718*387f9dfdSAndroid Build Coastguard Worker 719*387f9dfdSAndroid Build Coastguard WorkerUSAGE message: 720*387f9dfdSAndroid Build Coastguard Worker 721*387f9dfdSAndroid Build Coastguard Worker# ./offcputime.py -h 722*387f9dfdSAndroid Build Coastguard Workerusage: offcputime.py [-h] [-p PID | -t TID | -u | -k] [-U | -K] [-d] [-f] [-s] 723*387f9dfdSAndroid Build Coastguard Worker [--stack-storage-size STACK_STORAGE_SIZE] 724*387f9dfdSAndroid Build Coastguard Worker [-m MIN_BLOCK_TIME] [-M MAX_BLOCK_TIME] [--state STATE] 725*387f9dfdSAndroid Build Coastguard Worker [duration] 726*387f9dfdSAndroid Build Coastguard Worker 727*387f9dfdSAndroid Build Coastguard WorkerSummarize off-CPU time by stack trace 728*387f9dfdSAndroid Build Coastguard Worker 729*387f9dfdSAndroid Build Coastguard Workerpositional arguments: 730*387f9dfdSAndroid Build Coastguard Worker duration duration of trace, in seconds 731*387f9dfdSAndroid Build Coastguard Worker 732*387f9dfdSAndroid Build Coastguard Workeroptional arguments: 733*387f9dfdSAndroid Build Coastguard Worker -h, --help show this help message and exit 734*387f9dfdSAndroid Build Coastguard Worker -p PID, --pid PID trace this PID only 735*387f9dfdSAndroid Build Coastguard Worker -t TID, --tid TID trace this TID only 736*387f9dfdSAndroid Build Coastguard Worker -u, --user-threads-only 737*387f9dfdSAndroid Build Coastguard Worker user threads only (no kernel threads) 738*387f9dfdSAndroid Build Coastguard Worker -k, --kernel-threads-only 739*387f9dfdSAndroid Build Coastguard Worker kernel threads only (no user threads) 740*387f9dfdSAndroid Build Coastguard Worker -U, --user-stacks-only 741*387f9dfdSAndroid Build Coastguard Worker show stacks from user space only (no kernel space 742*387f9dfdSAndroid Build Coastguard Worker stacks) 743*387f9dfdSAndroid Build Coastguard Worker -K, --kernel-stacks-only 744*387f9dfdSAndroid Build Coastguard Worker show stacks from kernel space only (no user space 745*387f9dfdSAndroid Build Coastguard Worker stacks) 746*387f9dfdSAndroid Build Coastguard Worker -d, --delimited insert delimiter between kernel/user stacks 747*387f9dfdSAndroid Build Coastguard Worker -f, --folded output folded format 748*387f9dfdSAndroid Build Coastguard Worker -s, --offset show address offsets 749*387f9dfdSAndroid Build Coastguard Worker --stack-storage-size STACK_STORAGE_SIZE 750*387f9dfdSAndroid Build Coastguard Worker the number of unique stack traces that can be stored 751*387f9dfdSAndroid Build Coastguard Worker and displayed (default 16384) 752*387f9dfdSAndroid Build Coastguard Worker -m MIN_BLOCK_TIME, --min-block-time MIN_BLOCK_TIME 753*387f9dfdSAndroid Build Coastguard Worker the amount of time in microseconds over which we store 754*387f9dfdSAndroid Build Coastguard Worker traces (default 1) 755*387f9dfdSAndroid Build Coastguard Worker -M MAX_BLOCK_TIME, --max-block-time MAX_BLOCK_TIME 756*387f9dfdSAndroid Build Coastguard Worker the amount of time in microseconds under which we 757*387f9dfdSAndroid Build Coastguard Worker store traces (default U64_MAX) 758*387f9dfdSAndroid Build Coastguard Worker --state STATE filter on this thread state bitmask (eg, 2 == 759*387f9dfdSAndroid Build Coastguard Worker TASK_UNINTERRUPTIBLE) see include/linux/sched.h 760*387f9dfdSAndroid Build Coastguard Worker 761*387f9dfdSAndroid Build Coastguard Workerexamples: 762*387f9dfdSAndroid Build Coastguard Worker ./offcputime # trace off-CPU stack time until Ctrl-C 763*387f9dfdSAndroid Build Coastguard Worker ./offcputime 5 # trace for 5 seconds only 764*387f9dfdSAndroid Build Coastguard Worker ./offcputime -f 5 # 5 seconds, and output in folded format 765*387f9dfdSAndroid Build Coastguard Worker ./offcputime -s 5 # 5 seconds, and show symbol offsets 766*387f9dfdSAndroid Build Coastguard Worker ./offcputime -m 1000 # trace only events that last more than 1000 usec 767*387f9dfdSAndroid Build Coastguard Worker ./offcputime -M 10000 # trace only events that last less than 10000 usec 768*387f9dfdSAndroid Build Coastguard Worker ./offcputime -p 185 # only trace threads for PID 185 769*387f9dfdSAndroid Build Coastguard Worker ./offcputime -t 188 # only trace thread 188 770*387f9dfdSAndroid Build Coastguard Worker ./offcputime -u # only trace user threads (no kernel) 771*387f9dfdSAndroid Build Coastguard Worker ./offcputime -k # only trace kernel threads (no user) 772*387f9dfdSAndroid Build Coastguard Worker ./offcputime -U # only show user space stacks (no kernel) 773*387f9dfdSAndroid Build Coastguard Worker ./offcputime -K # only show kernel space stacks (no user) 774