perf
perf
perf is a Linux profiling tool that reads hardware performance counters from the CPU. Measure cycles, instructions, cache misses, branches—everything the CPU tracks natively. Answer the fundamental question: where is the program spending time, and why is it slow?
Unlike guessing, perf gives ground truth from the hardware. Low overhead (1-5%), no recompilation needed, and the data is reliable. In HPC work, perf is the first tool to reach for when something is slower than expected.
$ perf stat ./program Performance counter stats for './program': 4,102.38 msec task-clock # 3.98 CPUs utilized 16,847,203,412 cycles # 4.107 GHz 12,334,901,088 instructions # 0.73 insn per cycle 401,292,771 cache-misses # 33.33% of cache refs
IPC (instructions per cycle) of 0.73 on a modern superscalar CPU means the pipeline is stalled. A 33% cache miss rate means it's waiting for memory. Two numbers tell you everything you need to know to start optimizing.
Concepts
perf.md · Last modified: by 127.0.0.1
