dwww Home | Manual pages | Find package

stackcount(8)               System Manager's Manual              stackcount(8)

NAME
       stackcount  -  Count  function calls and their stack traces. Uses Linux
       eBPF/bcc.

SYNOPSIS
       stackcount [-h] [-p PID] [-c CPU] [-i INTERVAL] [-D DURATION] [-T]
                     [-r] [-s] [-P] [-K] [-U] [-v] [-d] [-f] [--debug] pattern

DESCRIPTION
       stackcount traces functions and frequency counts them with their entire
       stack trace, kernel stack and user stack, summarized in-kernel for  ef-
       ficiency.   This allows higher frequency events to be studied. The out-
       put consists of unique stack traces, and their  occurrence  counts.  In
       addition to kernel and user functions, kernel tracepoints and USDT tra-
       cepoint are also supported.

       The  pattern  is  a string with optional '*' wildcards, similar to file
       globbing.  If you'd prefer to use regular expressions, use the  -r  op-
       tion.

       This tool only works on Linux 4.6+. Stack traces are obtained using the
       new  `BPF_STACK_TRACE`  APIs.  For kernels older than 4.6, see the ver-
       sion under tools/old.

REQUIREMENTS
       CONFIG_BPF and bcc.

OPTIONS
       -h     Print usage message.

       -r     Allow regular expressions for the search  pattern.  The  default
              allows "*" wildcards only.

       -s     Show address offsets.

       -P     Display stacks separately for each process.

       -K     Show kernel stack only.

       -U     Show user stack only.

       -T     Include a timestamp with interval output.

       -v     Show raw addresses.

       -d     Print a delimiter ("--") in-between the kernel and user stacks.

       --debug
              Print  the source of the BPF program when loading it (for debug-
              ging purposes).

       -i interval
              Summary interval, in seconds.

       -D duration
              Total duration of trace, in seconds.  -f Folded output format.

       -p PID Trace this process ID only (filtered in-kernel).

       -c CPU Trace this CPU only (filtered in-kernel).

       pattern
              A function name, or a  search  pattern.  Can  include  wildcards
              ("*").  If  the  -r  option is used, can include regular expres-
              sions.

EXAMPLES
       Count kernel and user stack traces for submit_bio():
              # stackcount submit_bio

       Count stacks with a delimiter for submit_bio():
              # stackcount -d submit_bio

       Count kernel stack trace only for submit_bio():
              # stackcount -K submit_bio

       Count user stack trace only for submit_bio():
              # stackcount -U submit_bio

       Count stack traces for ip_output():
              # stackcount ip_output

       Show symbol offsets:
              # stackcount -s ip_output

       Show offsets and raw addresses (verbose):
              # stackcount -sv ip_output

       Count stacks for kernel functions matching tcp_send*:
              # stackcount 'tcp_send*'

       Same as previous, but using regular expressions:
              # stackcount -r '^tcp_send.*'

       Output every 5 seconds, with timestamps:
              # stackcount -Ti 5 ip_output

       Only count stacks when PID 185 is on-CPU:
              # stackcount -p 185 ip_output

       Only count stacks for CPU 1:
              # stackcount -c 1 put_prev_entity

       Count user stacks for dynamic heap allocations with malloc in PID 185:
              # stackcount -p 185 c:malloc

       Count user stacks for thread creation (USDT tracepoint) in PID 185:
              # stackcount -p 185 u:pthread:pthread_create

       Count stacks for context switch events using a kernel tracepoint:
              # stackcount t:sched:sched_switch

OVERHEAD
       This summarizes unique stack traces in-kernel for efficiency,  allowing
       it  to  trace  a  higher rate of function calls than methods that post-
       process in user space. The stack trace data  is  only  copied  to  user
       space  when the output is printed, which usually only happens once. The
       stack walking also happens in an optimized  code  path  in  the  kernel
       thanks  to the new BPF_STACK_TRACE table APIs, which should be more ef-
       ficient than the manual walker in the eBPF tracer which older  versions
       of  this  script  used.  With  this in mind, call rates of < 10,000/sec
       would incur negligible overhead. Test before production  use.  You  can
       also use funccount to get a handle on function call rates first.

SOURCE
       This is from bcc.

              https://github.com/iovisor/bcc

       Also  look  in  the bcc distribution for a companion _examples.txt file
       containing example usage, output, and commentary for this tool.

OS
       Linux

STABILITY
       Unstable - in development.

AUTHOR
       Brendan Gregg, Sasha Goldshtein

SEE ALSO
       stacksnoop(8), funccount(8)

USER COMMANDS                     2016-01-14                     stackcount(8)

Generated by dwww version 1.16 on Tue Dec 16 05:43:46 CET 2025.