Site Tools


perf

Table of Contents

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