linux profiler perf - ghdrako/doc_snipets GitHub Wiki
- https://www.brendangregg.com/perf.html
 - https://www.ibm.com/docs/en/linux-on-systems?topic=performance-getting-started-perf-command
 - https://phoenixnap.com/kb/linux-perf
 
# perf
 usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS]
 The most commonly used perf commands are:
   annotate        Read perf.data (created by perf record) and display annotated code
   archive         Create archive with object files with build-ids found in perf.data file
   bench           General framework for benchmark suites
   buildid-cache   Manage build-id cache.
   buildid-list    List the buildids in a perf.data file
   config          Get and set variables in a configuration file.
   data            Data file related processing
   diff            Read perf.data files and display the differential profile
   evlist          List the event names in a perf.data file
   inject          Filter to augment the events stream with additional information
   kmem            Tool to trace/measure kernel memory properties
   kvm             Tool to trace/measure kvm guest os
   list            List all symbolic event types
   lock            Analyze lock events
   mem             Profile memory accesses
   record          Run a command and record its profile into perf.data
   report          Read perf.data (created by perf record) and display the profile
   sched           Tool to trace/measure scheduler properties (latencies)
   script          Read perf.data (created by perf record) and display trace output
   stat            Run a command and gather performance counter statistics
   test            Runs sanity tests.
   timechart       Tool to visualize total system behavior during a workload
   top             System profiling tool.
   probe           Define new dynamic tracepoints
   trace           strace inspired tool
 See 'perf help COMMAND' for more information on a specific command.
sudo su -
echo 0 > /proc/sys/kernel/perf_event_paranoid
exit
persist usage perf after reboot
sudo nano /etc/sysctl.conf
kernel.perf_event_paranoid = 0
 perf <options> subcommand <options/arguments>
| Subcommand | Description | 
|---|---|
| annotate | Reads perf.data and shows annotated code. | 
| list | Lists all measurable events. stat Gathers performance statistics. | 
| stat | Gathers performance statistics. | 
| record | Records samples into perf.data. | 
| report | Reads perf.data and displays the profile. | 
| script | Reads perf.data and displays trace output. | 
| top | Profiling tool. | 
sudo perf stat <command>
sudo perf stat ls
$ ps -o pid,user,%mem,command ax | sort -b -k3 -r
$ sudo pmap 917
$ sudo pmap 917 | tail -n 1  # show only total memory usage
$ sudo pmap 917 | tail -n 1 | awk '/[0-9]K/{print $2}'  # show only total memory usage in KB
$ top | grep <PROCESS NAME>
$ /usr/bin/time --verbose ls # trzeba zainstalowa 
$ valgrind --tool=massif <executable> <arguments>