perf-top(1)
===========

NAME
----
perf-top - System profiling tool.

SYNOPSIS
--------
[verse]
'perf top' [-e <EVENT> | --event=EVENT] [<options>]

DESCRIPTION
-----------
This command generates and displays a performance counter profile in real time.


OPTIONS
-------
-a::
--all-cpus::
        System-wide collection.  (default)

-c <count>::
--count=<count>::
	Event period to sample.

-C <cpu-list>::
--cpu=<cpu>::
Monitor only on the list of CPUs provided. Multiple CPUs can be provided as a
comma-separated list with no space: 0,1. Ranges of CPUs are specified with -: 0-2.
Default is to monitor all CPUS.

-d <seconds>::
--delay=<seconds>::
	Number of seconds to delay between refreshes.

-e <event>::
--event=<event>::
	Select the PMU event. Selection can be a symbolic event name
	(use 'perf list' to list all events) or a raw PMU
	event (eventsel+umask) in the form of rNNN where NNN is a
	hexadecimal event descriptor.

-E <entries>::
--entries=<entries>::
	Display this many functions.

-f <count>::
--count-filter=<count>::
	Only display functions with more events than this.

--group::
        Put the counters into a counter group.

-F <freq>::
--freq=<freq>::
	Profile at this frequency.

-i::
--inherit::
	Child tasks do not inherit counters.

-k <path>::
--vmlinux=<path>::
	Path to vmlinux.  Required for annotation functionality.

-m <pages>::
--mmap-pages=<pages>::
	Number of mmap data pages (must be a power of two) or size
	specification with appended unit character - B/K/M/G. The
	size is rounded up to have nearest pages power of two value.

-p <pid>::
--pid=<pid>::
	Profile events on existing Process ID (comma separated list).

-t <tid>::
--tid=<tid>::
        Profile events on existing thread ID (comma separated list).

-u::
--uid=::
        Record events in threads owned by uid. Name or number.

-r <priority>::
--realtime=<priority>::
	Collect data with this RT SCHED_FIFO priority.

--sym-annotate=<symbol>::
        Annotate this symbol.

-K::
--hide_kernel_symbols::
        Hide kernel symbols.

-U::
--hide_user_symbols::
        Hide user symbols.

--demangle-kernel::
        Demangle kernel symbols.

-D::
--dump-symtab::
        Dump the symbol table used for profiling.

-v::
--verbose::
	Be more verbose (show counter open errors, etc).

-z::
--zero::
	Zero history across display updates.

-s::
--sort::
	Sort by key(s): pid, comm, dso, symbol, parent, srcline, weight,
	local_weight, abort, in_tx, transaction, overhead, sample, period.
	Please see description of --sort in the perf-report man page.

--fields=::
	Specify output field - multiple keys can be specified in CSV format.
	Following fields are available:
	overhead, overhead_sys, overhead_us, overhead_children, sample and period.
	Also it can contain any sort key(s).

	By default, every sort keys not specified in --field will be appended
	automatically.

-n::
--show-nr-samples::
	Show a column with the number of samples.

--show-total-period::
	Show a column with the sum of periods.

--dsos::
	Only consider symbols in these dsos.  This option will affect the
	percentage of the overhead column.  See --percentage for more info.

--comms::
	Only consider symbols in these comms.  This option will affect the
	percentage of the overhead column.  See --percentage for more info.

--symbols::
	Only consider these symbols.  This option will affect the
	percentage of the overhead column.  See --percentage for more info.

-M::
--disassembler-style=:: Set disassembler style for objdump.

--source::
	Interleave source code with assembly code. Enabled by default,
	disable with --no-source.

--asm-raw::
	Show raw instruction encoding of assembly instructions.

-g::
	Enables call-graph (stack chain/backtrace) recording.

--call-graph::
	Setup and enable call-graph (stack chain/backtrace) recording,
	implies -g.

--children::
	Accumulate callchain of children to parent entry so that then can
	show up in the output.  The output will have a new "Children" column
	and will be sorted on the data.  It requires -g/--call-graph option
	enabled.  See the `overhead calculation' section for more details.

--max-stack::
	Set the stack depth limit when parsing the callchain, anything
	beyond the specified depth will be ignored. This is a trade-off
	between information loss and faster processing especially for
	workloads that can have a very long callchain stack.

	Default: 127

--ignore-callees=<regex>::
        Ignore callees of the function(s) matching the given regex.
        This has the effect of collecting the callers of each such
        function into one place in the call-graph tree.

--percent-limit::
	Do not show entries which have an overhead under that percent.
	(Default: 0).

--percentage::
	Determine how to display the overhead percentage of filtered entries.
	Filters can be applied by --comms, --dsos and/or --symbols options and
	Zoom operations on the TUI (thread, dso, etc).

	"relative" means it's relative to filtered entries only so that the
	sum of shown entries will be always 100%. "absolute" means it retains
	the original value before and after the filter is applied.

-w::
--column-widths=<width[,width...]>::
	Force each column width to the provided list, for large terminal
	readability.  0 means no limit (default behavior).

--proc-map-timeout::
	When processing pre-existing threads /proc/XXX/mmap, it may take
	a long time, because the file may be huge. A time out is needed
	in such cases.
	This option sets the time out limit. The default value is 500 ms.


INTERACTIVE PROMPTING KEYS
--------------------------

[d]::
	Display refresh delay.

[e]::
	Number of entries to display.

[E]::
	Event to display when multiple counters are active.

[f]::
	Profile display filter (>= hit count).

[F]::
	Annotation display filter (>= % of total).

[s]::
	Annotate symbol.

[S]::
	Stop annotation, return to full profile display.

[z]::
	Toggle event count zeroing across display updates.

[qQ]::
	Quit.

Pressing any unmapped key displays a menu, and prompts for input.

include::callchain-overhead-calculation.txt[]

SEE ALSO
--------
linkperf:perf-stat[1], linkperf:perf-list[1], linkperf:perf-report[1]
