1 For a higher level overview, try: perf report 1 For a higher level overview, try: perf report --sort comm,dso 2 Sample related events with: perf record -e '{c 2 Sample related events with: perf record -e '{cycles,instructions}:S' 3 Compare performance results with: perf diff [< 3 Compare performance results with: perf diff [<old file> <new file>] 4 Boolean options have negative forms, e.g.: per 4 Boolean options have negative forms, e.g.: perf report --no-children 5 To not accumulate CPU time of children symbols << 6 Customize output of perf script with: perf scr 5 Customize output of perf script with: perf script -F event,ip,sym 7 Generate a script for your data: perf script - 6 Generate a script for your data: perf script -g <lang> 8 Save output of perf stat using: perf stat reco 7 Save output of perf stat using: perf stat record <target workload> 9 Create an archive with symtabs to analyse on o 8 Create an archive with symtabs to analyse on other machine: perf archive 10 Search options using a keyword: perf report -h 9 Search options using a keyword: perf report -h <keyword> 11 Use parent filter to see specific call path: p 10 Use parent filter to see specific call path: perf report -p <regex> 12 List events using substring match: perf list < 11 List events using substring match: perf list <keyword> 13 To see list of saved events and attributes: pe 12 To see list of saved events and attributes: perf evlist -v 14 Use --symfs <dir> if your symbol files are in 13 Use --symfs <dir> if your symbol files are in non-standard locations 15 To see callchains in a more compact form: perf 14 To see callchains in a more compact form: perf report -g folded 16 To see call chains by final symbol taking CPU << 17 Show individual samples with: perf script 15 Show individual samples with: perf script 18 Limit to show entries above 5% only: perf repo 16 Limit to show entries above 5% only: perf report --percent-limit 5 19 Profiling branch (mis)predictions with: perf r 17 Profiling branch (mis)predictions with: perf record -b / perf report 20 To show assembler sample context control flow !! 18 To show assembler sample contexts use perf record -b / perf script -F +brstackinsn --xed 21 To adjust path to source files to local file s !! 19 Treat branches as callchains: perf report --branch-history 22 Treat branches as callchains: perf record -b . !! 20 To count events in every 1000 msec: perf stat -I 1000 23 Show estimate cycles per function and IPC in a !! 21 Print event counts in CSV format with: perf stat -x, 24 To count events every 1000 msec: perf stat -I << 25 Print event counts in machine readable CSV for << 26 If you have debuginfo enabled, try: perf repor 22 If you have debuginfo enabled, try: perf report -s sym,srcline 27 For memory address profiling, try: perf mem re 23 For memory address profiling, try: perf mem record / perf mem report 28 For tracepoint events, try: perf report -s tra 24 For tracepoint events, try: perf report -s trace_fields 29 To record callchains for each sample: perf rec 25 To record callchains for each sample: perf record -g 30 If call chains don't work try perf record --ca << 31 To record every process run by a user: perf re 26 To record every process run by a user: perf record -u <user> 32 To show inline functions in call traces add -- << 33 To not record events from perf itself add --ex << 34 Skip collecting build-id when recording: perf 27 Skip collecting build-id when recording: perf record -B 35 To change sampling frequency to 100 Hz: perf r 28 To change sampling frequency to 100 Hz: perf record -F 100 36 To show information about system the samples w << 37 To only collect call graph on one event use pe << 38 To set sampling period of individual events us << 39 To group events which need to be collected tog << 40 To compute metrics for samples use perf record << 41 See assembly instructions with percentage: per 29 See assembly instructions with percentage: perf annotate <symbol> 42 If you prefer Intel style assembly, try: perf 30 If you prefer Intel style assembly, try: perf annotate -M intel 43 When collecting LBR backtraces use --stitch-lb << 44 For hierarchical output, try: perf report --hi 31 For hierarchical output, try: perf report --hierarchy 45 Order by the overhead of source file name and 32 Order by the overhead of source file name and line number: perf report -s srcline 46 System-wide collection from all CPUs: perf rec 33 System-wide collection from all CPUs: perf record -a 47 Show current config key-value pairs: perf conf 34 Show current config key-value pairs: perf config --list 48 To collect Processor Trace with samples use pe << 49 To trace calls using Processor Trace use perf << 50 To measure approximate function latency with P << 51 To trace only single function with Processor T << 52 Show user configuration overrides: perf config 35 Show user configuration overrides: perf config --user --list 53 To add Node.js USDT(User-Level Statically Defi 36 To add Node.js USDT(User-Level Statically Defined Tracing): perf buildid-cache --add `which node` 54 To analyze cache line scalability issues use p !! 37 To report cacheline events from previous recording: perf c2c report 55 To browse sample contexts use perf report --sa 38 To browse sample contexts use perf report --sample 10 and select in context menu 56 To separate samples by time use perf report -- 39 To separate samples by time use perf report --sort time,overhead,sym 57 To filter subset of samples with report or scr << 58 To set sample time separation other than 100ms 40 To set sample time separation other than 100ms with --sort time use --time-quantum 59 Add -I to perf record to sample register value !! 41 Add -I to perf report to sample register values visible in perf report context. 60 To show IPC for sampling periods use perf reco 42 To show IPC for sampling periods use perf record -e '{cycles,instructions}:S' and then browse context 61 To show context switches in perf report sample 43 To show context switches in perf report sample context add --switch-events to perf record. 62 To show time in nanoseconds in record/report a << 63 To compare hot regions in two workloads use pe << 64 To compare scalability of two workload samples <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.