]>
Commit | Line | Data |
---|---|---|
1d8c8b20 | 1 | perf-stat(1) |
6e6b754f | 2 | ============ |
1d8c8b20 IM |
3 | |
4 | NAME | |
5 | ---- | |
6 | perf-stat - Run a command and gather performance counter statistics | |
7 | ||
8 | SYNOPSIS | |
9 | -------- | |
10 | [verse] | |
8c207692 SB |
11 | 'perf stat' [-e <EVENT> | --event=EVENT] [-a] <command> |
12 | 'perf stat' [-e <EVENT> | --event=EVENT] [-a] -- <command> [<options>] | |
1d8c8b20 IM |
13 | |
14 | DESCRIPTION | |
15 | ----------- | |
16 | This command runs a command and gathers performance counter statistics | |
17 | from it. | |
18 | ||
19 | ||
20 | OPTIONS | |
21 | ------- | |
22 | <command>...:: | |
23 | Any command you can specify in a shell. | |
24 | ||
20c84e95 | 25 | |
1d8c8b20 IM |
26 | -e:: |
27 | --event=:: | |
386b05e3 TG |
28 | Select the PMU event. Selection can be a symbolic event name |
29 | (use 'perf list' to list all events) or a raw PMU | |
30 | event (eventsel+umask) in the form of rNNN where NNN is a | |
31 | hexadecimal event descriptor. | |
1d8c8b20 | 32 | |
20c84e95 | 33 | -i:: |
2e6cdf99 SE |
34 | --no-inherit:: |
35 | child tasks do not inherit counters | |
20c84e95 IM |
36 | -p:: |
37 | --pid=<pid>:: | |
b52956c9 | 38 | stat events on existing process id (comma separated list) |
8c207692 SB |
39 | |
40 | -t:: | |
41 | --tid=<tid>:: | |
b52956c9 | 42 | stat events on existing thread id (comma separated list) |
8c207692 | 43 | |
20c84e95 | 44 | |
1d8c8b20 | 45 | -a:: |
8c207692 SB |
46 | --all-cpus:: |
47 | system-wide collection from all CPUs | |
1d8c8b20 | 48 | |
b26bc5a7 | 49 | -c:: |
8c207692 SB |
50 | --scale:: |
51 | scale/normalize counter values | |
52 | ||
53 | -r:: | |
54 | --repeat=<n>:: | |
55 | repeat command and print average + stddev (max: 100) | |
1d8c8b20 | 56 | |
5af52b51 | 57 | -B:: |
8c207692 | 58 | --big-num:: |
5af52b51 SE |
59 | print large numbers with thousands' separators according to locale |
60 | ||
c45c6ea2 SE |
61 | -C:: |
62 | --cpu=:: | |
8c207692 SB |
63 | Count only on the list of CPUs provided. Multiple CPUs can be provided as a |
64 | comma-separated list with no space: 0,1. Ranges of CPUs are specified with -: 0-2. | |
c45c6ea2 SE |
65 | In per-thread mode, this option is ignored. The -a option is still necessary |
66 | to activate system-wide monitoring. Default is to count on all CPUs. | |
67 | ||
f5b4a9c3 SE |
68 | -A:: |
69 | --no-aggr:: | |
70 | Do not aggregate counts across all monitored CPUs in system-wide mode (-a). | |
71 | This option is only valid in system-wide mode. | |
72 | ||
8c207692 SB |
73 | -n:: |
74 | --null:: | |
75 | null run - don't start any counters | |
76 | ||
77 | -v:: | |
78 | --verbose:: | |
79 | be more verbose (show counter open errors, etc) | |
80 | ||
d7470b6a SE |
81 | -x SEP:: |
82 | --field-separator SEP:: | |
83 | print counts using a CSV-style output to make it easy to import directly into | |
84 | spreadsheets. Columns are separated by the string specified in SEP. | |
85 | ||
023695d9 SE |
86 | -G name:: |
87 | --cgroup name:: | |
88 | monitor only in the container (cgroup) called "name". This option is available only | |
89 | in per-cpu mode. The cgroup filesystem must be mounted. All threads belonging to | |
90 | container "name" are monitored when they run on the monitored CPUs. Multiple cgroups | |
91 | can be provided. Each cgroup is applied to the corresponding event, i.e., first cgroup | |
92 | to first event, second cgroup to second event and so on. It is possible to provide | |
93 | an empty cgroup (monitor all the time) using, e.g., -G foo,,bar. Cgroups must have | |
94 | corresponding events, i.e., they always refer to events defined earlier on the command | |
95 | line. | |
96 | ||
4aa9015f | 97 | -o file:: |
56f3bae7 | 98 | --output file:: |
4aa9015f SE |
99 | Print the output into the designated file. |
100 | ||
101 | --append:: | |
102 | Append to the output file designated with the -o option. Ignored if -o is not specified. | |
103 | ||
56f3bae7 JC |
104 | --log-fd:: |
105 | ||
106 | Log output to fd, instead of stderr. Complementary to --output, and mutually exclusive | |
107 | with it. --append may be used here. Examples: | |
108 | 3>results perf stat --log-fd 3 -- $cmd | |
109 | 3>>results perf stat --log-fd 3 --append -- $cmd | |
110 | ||
1f16c575 PZ |
111 | --pre:: |
112 | --post:: | |
113 | Pre and post measurement hooks, e.g.: | |
114 | ||
115 | perf stat --repeat 10 --null --sync --pre 'make -s O=defconfig-build/clean' -- make -s -j64 O=defconfig-build/ bzImage | |
56f3bae7 | 116 | |
13370a9b SE |
117 | -I msecs:: |
118 | --interval-print msecs:: | |
119 | print count deltas every N milliseconds (minimum: 100ms) | |
120 | example: perf stat -I 1000 -e cycles -a sleep 5 | |
56f3bae7 | 121 | |
1d8c8b20 IM |
122 | EXAMPLES |
123 | -------- | |
124 | ||
20c84e95 | 125 | $ perf stat -- make -j |
1d8c8b20 | 126 | |
20c84e95 | 127 | Performance counter stats for 'make -j': |
1d8c8b20 | 128 | |
20c84e95 IM |
129 | 8117.370256 task clock ticks # 11.281 CPU utilization factor |
130 | 678 context switches # 0.000 M/sec | |
131 | 133 CPU migrations # 0.000 M/sec | |
132 | 235724 pagefaults # 0.029 M/sec | |
133 | 24821162526 CPU cycles # 3057.784 M/sec | |
134 | 18687303457 instructions # 2302.138 M/sec | |
135 | 172158895 cache references # 21.209 M/sec | |
136 | 27075259 cache misses # 3.335 M/sec | |
1d8c8b20 | 137 | |
20c84e95 | 138 | Wall-clock time elapsed: 719.554352 msecs |
1d8c8b20 IM |
139 | |
140 | SEE ALSO | |
141 | -------- | |
386b05e3 | 142 | linkperf:perf-top[1], linkperf:perf-list[1] |