Подтвердить что ты не робот

Использование счетчиков производительности оборудования в Linux

Я хочу использовать счетчики производительности оборудования, которые поставляются с многоядерными процессорами Intel и AMD x86_64 для вычисления количества отставших магазинов программой. Я хочу, чтобы каждый поток вычислил свои отставные магазины отдельно. Это можно сделать? И если да, то как в C/С++?

4b9b3361

Ответ 1

Вы можете использовать Perfctr или PAPI, если вы хотите считать аппаратные события в какой-то части программы внутренне (без запуска какого-либо стороннего инструмента).

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

Домашняя страница PAPI: http://icl.cs.utk.edu/papi/

PerfSuite хороший документ: http://perfsuite.ncsa.illinois.edu/publications/LJ135/x27.html

Если вы можете сделать это извне, существует команда perf для современной Linux.

Первичная вики: https://perf.wiki.kernel.org/index.php/Main_Page

Ответ 2

Лучший подход будет заключаться в использовании perf в linux, о чем упоминалось osgx, поскольку он является частью ядра linux. Но он также может быть вызван в коде C/С++, и нет необходимости в том, чтобы он был внешним перт-статусом.

Просто загрузите исходный код ядра и взгляните на него. Или, альтернативно, взгляните на эту библиотеку, я думаю, google:

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

он является частью проекта perfmon2, но предназначен для работы с perf. Посмотрите на каталог perf_examples, и вы получите эту идею. Вот как я обрабатываю перфомансы из моих кодов C.

Ответ 3

Официальное приложение от AMD называется CodeAnalyst