Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find out how many hardware performance counters a CPU has

On an Intel or AMD x86-64 system running Linux, where/how can I find out the number of hardware performance counters that my CPU has?

I would like to use the Linux perf tool to gather hardware performance counter data while executing some applications. The perf wiki's tutorial says that if I specify (using the -e flag to perf stat or perf record) more hardware events than there are performance counters in my CPU, then these events will be multiplexed over the counters during the execution, allowing them to all be tracked during a single perf command, but possibly reducing accuracy because not all counters are active all the time. (Note that I am concerned with hardware events here, such as for cache and TLB behavior - I know that a large/unlimited number of kernel software tracepoints can be tracked without inaccuracy).

If I find out my processor model, is there an Intel/AMD website where I can find this information? Is there a simple command that I can run on the system to check the number of hardware counters? I've examined the output of cat /proc/cpuinfo and x86info -a, but couldn't find this information.

like image 751
pjhsea Avatar asked Jan 17 '14 07:01

pjhsea


People also ask

What are CPU performance counters?

The CPU performance counters are counting the number of instructions, clock ticks and multi counters ticks. They are used to measure the run-time of a c-function. The result is stored in a global variable.

What counters We monitor especially for a processor in performance testing?

System, Counter: Processor Queue Length. This Performance Monitor counter displays the number of threads waiting to be executed in the queue, which all the processors on your system share. If this counter has a sustained value of two or more threads, you have a processor bottleneck on your hands.

What is meant by hardware performance counters?

In computers, hardware performance counters (HPC), or hardware counters are a set of special-purpose registers built into modern microprocessors to store the counts of hardware-related activities within computer systems. Advanced users often rely on those counters to conduct low-level performance analysis or tuning.


1 Answers

Regarding Intel processors, you can:

  • look in this intel documentation manual chapter 18, but it's not so easy to read.

  • use the cpuid instruction - This will require to write assembly code to correctly set parameters and get results.

  • download and compile/install the papi library and run papi_avail | more. The result on my laptop is:

PAPI Version : 5.1.1.0

Vendor string and code : GenuineIntel (1)

Model string and code : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz (42)

CPU Revision : 7.000000

CPUID Info : Family: 6 Model: 42 Stepping: 7

CPU Max Megahertz : 2494

CPU Min Megahertz : 2494

Hdw Threads per core : 2

Cores per Socket : 2

NUMA Nodes : 1

CPUs per Node : 4

Total CPUs : 4

Running in a VM : no

Number Hardware Counters : 11

Max Multiplex Counters : 64

like image 72
Manuel Selva Avatar answered Sep 20 '22 03:09

Manuel Selva