MetallicPriest
MetallicPriest

Reputation: 30765

Using Hardware Performance Counters in Linux

I want to use the Hardware Performance Counters that come with the Intel and AMD x86_64 multicore processors to calculate the number of retired stores by a program. I want each thread to calculate its retired stores separately. Can it be done? And if so, how in C/C++?

Upvotes: 15

Views: 8835

Answers (4)

Saman Barghi
Saman Barghi

Reputation: 354

The best approach will be using perf in linux as osgx mentioned, as it is part of linux kernel. But it CAN be called in the C/C++ code as well, and there is no need for it to be external perf stat calls.

Just download the kernel source code and take a look at it. Or alternatively take a look at this library I think by google:

http://perfmon2.sourceforge.net/docs_v4.html

it is part of perfmon2 project but is designed to work with perf. Take a look at perf_examples directory and you will get the idea. That is how I handle perf calls from within my C codes.

Upvotes: 3

mahmood
mahmood

Reputation: 24715

The official application from AMD is named CodeAnalyst

Upvotes: 2

user149341
user149341

Reputation:

Checked out oprofile yet?

http://oprofile.sourceforge.net/

Upvotes: 0

osgx
osgx

Reputation: 94245

You can use Perfctr or PAPI if you want to count hardware events on some part of the program internally (without starting any 3rd party tool).

Perfctr quickstart: http://www.ale.csce.kyushu-u.ac.jp/~satoshi/how_to_use_perfctr.htm

PAPI homepage: http://icl.cs.utk.edu/papi/

PerfSuite good doc: http://perfsuite.ncsa.illinois.edu/publications/LJ135/x27.html

If you can do this externally, there is a perf command of modern Linux.

perf wiki: https://perf.wiki.kernel.org/index.php/Main_Page

Upvotes: 10

Related Questions