perf-stat.txt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. perf-stat(1)
  2. ============
  3. NAME
  4. ----
  5. perf-stat - Run a command and gather performance counter statistics
  6. SYNOPSIS
  7. --------
  8. [verse]
  9. 'perf stat' [-e <EVENT> | --event=EVENT] [-a] <command>
  10. 'perf stat' [-e <EVENT> | --event=EVENT] [-a] -- <command> [<options>]
  11. DESCRIPTION
  12. -----------
  13. This command runs a command and gathers performance counter statistics
  14. from it.
  15. OPTIONS
  16. -------
  17. <command>...::
  18. Any command you can specify in a shell.
  19. -e::
  20. --event=::
  21. Select the PMU event. Selection can be:
  22. - a symbolic event name (use 'perf list' to list all events)
  23. - a raw PMU event (eventsel+umask) in the form of rNNN where NNN is a
  24. hexadecimal event descriptor.
  25. - a symbolically formed event like 'pmu/param1=0x3,param2/' where
  26. param1 and param2 are defined as formats for the PMU in
  27. /sys/bus/event_sources/devices/<pmu>/format/*
  28. - a symbolically formed event like 'pmu/config=M,config1=N,config2=K/'
  29. where M, N, K are numbers (in decimal, hex, octal format).
  30. Acceptable values for each of 'config', 'config1' and 'config2'
  31. parameters are defined by corresponding entries in
  32. /sys/bus/event_sources/devices/<pmu>/format/*
  33. -i::
  34. --no-inherit::
  35. child tasks do not inherit counters
  36. -p::
  37. --pid=<pid>::
  38. stat events on existing process id (comma separated list)
  39. -t::
  40. --tid=<tid>::
  41. stat events on existing thread id (comma separated list)
  42. -a::
  43. --all-cpus::
  44. system-wide collection from all CPUs
  45. -c::
  46. --scale::
  47. scale/normalize counter values
  48. -d::
  49. --detailed::
  50. print more detailed statistics, can be specified up to 3 times
  51. -d: detailed events, L1 and LLC data cache
  52. -d -d: more detailed events, dTLB and iTLB events
  53. -d -d -d: very detailed events, adding prefetch events
  54. -r::
  55. --repeat=<n>::
  56. repeat command and print average + stddev (max: 100). 0 means forever.
  57. -B::
  58. --big-num::
  59. print large numbers with thousands' separators according to locale
  60. -C::
  61. --cpu=::
  62. Count only on the list of CPUs provided. Multiple CPUs can be provided as a
  63. comma-separated list with no space: 0,1. Ranges of CPUs are specified with -: 0-2.
  64. In per-thread mode, this option is ignored. The -a option is still necessary
  65. to activate system-wide monitoring. Default is to count on all CPUs.
  66. -A::
  67. --no-aggr::
  68. Do not aggregate counts across all monitored CPUs in system-wide mode (-a).
  69. This option is only valid in system-wide mode.
  70. -n::
  71. --null::
  72. null run - don't start any counters
  73. -v::
  74. --verbose::
  75. be more verbose (show counter open errors, etc)
  76. -x SEP::
  77. --field-separator SEP::
  78. print counts using a CSV-style output to make it easy to import directly into
  79. spreadsheets. Columns are separated by the string specified in SEP.
  80. -G name::
  81. --cgroup name::
  82. monitor only in the container (cgroup) called "name". This option is available only
  83. in per-cpu mode. The cgroup filesystem must be mounted. All threads belonging to
  84. container "name" are monitored when they run on the monitored CPUs. Multiple cgroups
  85. can be provided. Each cgroup is applied to the corresponding event, i.e., first cgroup
  86. to first event, second cgroup to second event and so on. It is possible to provide
  87. an empty cgroup (monitor all the time) using, e.g., -G foo,,bar. Cgroups must have
  88. corresponding events, i.e., they always refer to events defined earlier on the command
  89. line.
  90. -o file::
  91. --output file::
  92. Print the output into the designated file.
  93. --append::
  94. Append to the output file designated with the -o option. Ignored if -o is not specified.
  95. --log-fd::
  96. Log output to fd, instead of stderr. Complementary to --output, and mutually exclusive
  97. with it. --append may be used here. Examples:
  98. 3>results perf stat --log-fd 3 -- $cmd
  99. 3>>results perf stat --log-fd 3 --append -- $cmd
  100. --pre::
  101. --post::
  102. Pre and post measurement hooks, e.g.:
  103. perf stat --repeat 10 --null --sync --pre 'make -s O=defconfig-build/clean' -- make -s -j64 O=defconfig-build/ bzImage
  104. -I msecs::
  105. --interval-print msecs::
  106. Print count deltas every N milliseconds (minimum: 10ms)
  107. The overhead percentage could be high in some cases, for instance with small, sub 100ms intervals. Use with caution.
  108. example: 'perf stat -I 1000 -e cycles -a sleep 5'
  109. --per-socket::
  110. Aggregate counts per processor socket for system-wide mode measurements. This
  111. is a useful mode to detect imbalance between sockets. To enable this mode,
  112. use --per-socket in addition to -a. (system-wide). The output includes the
  113. socket number and the number of online processors on that socket. This is
  114. useful to gauge the amount of aggregation.
  115. --per-core::
  116. Aggregate counts per physical processor for system-wide mode measurements. This
  117. is a useful mode to detect imbalance between physical cores. To enable this mode,
  118. use --per-core in addition to -a. (system-wide). The output includes the
  119. core number and the number of online logical processors on that physical processor.
  120. --per-thread::
  121. Aggregate counts per monitored threads, when monitoring threads (-t option)
  122. or processes (-p option).
  123. -D msecs::
  124. --delay msecs::
  125. After starting the program, wait msecs before measuring. This is useful to
  126. filter out the startup phase of the program, which is often very different.
  127. -T::
  128. --transaction::
  129. Print statistics of transactional execution if supported.
  130. EXAMPLES
  131. --------
  132. $ perf stat -- make -j
  133. Performance counter stats for 'make -j':
  134. 8117.370256 task clock ticks # 11.281 CPU utilization factor
  135. 678 context switches # 0.000 M/sec
  136. 133 CPU migrations # 0.000 M/sec
  137. 235724 pagefaults # 0.029 M/sec
  138. 24821162526 CPU cycles # 3057.784 M/sec
  139. 18687303457 instructions # 2302.138 M/sec
  140. 172158895 cache references # 21.209 M/sec
  141. 27075259 cache misses # 3.335 M/sec
  142. Wall-clock time elapsed: 719.554352 msecs
  143. SEE ALSO
  144. --------
  145. linkperf:perf-top[1], linkperf:perf-list[1]