perf is an abbreviation of the Linux performance event counter subsystem,
perf_events, and also the name of the command-line tool for interacting with
perf_events. Both have been part of the kernel since Linux 2.6.31. There is plenty of useful information in the Linux source tree in
tools/perf/Documentation, and also at https://perf.wiki.kernel.org.
The initial impetus for developing
perf was to provide a unified way to access the registers of the
performance measurement unit (PMU), which is part of most modern processor cores. Once the API was defined and integrated into Linux, it became logical to extend it to cover other types of performance counters.
At its heart,
perf is a collection of event counters with rules about when ...