• Steven Rostedt's avatar
    ftrace: stack trace add indexes · 1b6cced6
    Steven Rostedt authored
    This patch adds indexes into the stack that the functions in the
    stack dump were found at. As an added bonus, I also added a diff
    to show which function is the most notorious consumer of the stack.
    
    The output now looks like this:
    
    # cat /debug/tracing/stack_trace
            Depth   Size      Location    (48 entries)
            -----   ----      --------
      0)     2476     212   blk_recount_segments+0x39/0x59
      1)     2264      12   bio_phys_segments+0x16/0x1d
      2)     2252      20   blk_rq_bio_prep+0x23/0xaf
      3)     2232      12   init_request_from_bio+0x74/0x77
      4)     2220      56   __make_request+0x294/0x331
      5)     2164     136   generic_make_request+0x34f/0x37d
      6)     2028      56   submit_bio+0xe7/0xef
      7)     1972      28   submit_bh+0xd1/0xf0
      8)     1944     112   block_read_full_page+0x299/0x2a9
      9)     1832       8   blkdev_readpage+0x14/0x16
     10)     1824      28   read_cache_page_async+0x7e/0x109
     11)     1796      16   read_cache_page+0x11/0x49
     12)     1780      32   read_dev_sector+0x3c/0x72
     13)     1748      48   read_lba+0x4d/0xaa
     14)     1700     168   efi_partition+0x85/0x61b
     15)     1532      72   rescan_partitions+0x10e/0x266
     16)     1460      40   do_open+0x1c7/0x24e
     17)     1420     292   __blkdev_get+0x79/0x84
     18)     1128      12   blkdev_get+0x12/0x14
     19)     1116      20   register_disk+0xd1/0x11e
     20)     1096      28   add_disk+0x34/0x90
     21)     1068      52   sd_probe+0x2b1/0x366
     22)     1016      20   driver_probe_device+0xa5/0x120
     23)      996       8   __device_attach+0xd/0xf
     24)      988      32   bus_for_each_drv+0x3e/0x68
     25)      956      24   device_attach+0x56/0x6c
     26)      932      16   bus_attach_device+0x26/0x4d
     27)      916      64   device_add+0x380/0x4b4
     28)      852      28   scsi_sysfs_add_sdev+0xa1/0x1c9
     29)      824     160   scsi_probe_and_add_lun+0x919/0xa2a
     30)      664      36   __scsi_add_device+0x88/0xae
     31)      628      44   ata_scsi_scan_host+0x9e/0x21c
     32)      584      28   ata_host_register+0x1cb/0x1db
     33)      556      24   ata_host_activate+0x98/0xb5
     34)      532     192   ahci_init_one+0x9bd/0x9e9
     35)      340      20   pci_device_probe+0x3e/0x5e
     36)      320      20   driver_probe_device+0xa5/0x120
     37)      300      20   __driver_attach+0x3f/0x5e
     38)      280      36   bus_for_each_dev+0x40/0x62
     39)      244      12   driver_attach+0x19/0x1b
     40)      232      28   bus_add_driver+0x9c/0x1af
     41)      204      28   driver_register+0x76/0xd2
     42)      176      20   __pci_register_driver+0x44/0x71
     43)      156       8   ahci_init+0x14/0x16
     44)      148     100   _stext+0x42/0x122
     45)       48      20   kernel_init+0x175/0x1dc
     46)       28      28   kernel_thread_helper+0x7/0x10
    
    The first column is simply an index starting from the inner most function
    and counting down to the outer most.
    
    The next column is the location that the function was found on the stack.
    
    The next column is the size of the stack for that function.
    Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    1b6cced6
trace_stack.c 6.4 KB