2011-08-18 26 views
13

Quiero utilizar los Contadores de rendimiento de hardware que vienen con los procesadores multinúcleo Intel y AMD x86_64 para calcular el número de tiendas retiradas por un programa. Quiero que cada hilo calcule sus tiendas retiradas por separado. Se puede hacer? Y si es así, ¿cómo en C/C++?Uso de contadores de rendimiento de hardware en Linux

+1

Esta tarea es tan difícil de realizar que nadie la conoce :(! – MetallicPriest

+1

¿Alguna vez has oído hablar de PAPI (Interfaz de programación de aplicaciones de rendimiento)? He trabajado con Intel x86. No estoy seguro de si tiene soporte de AMD, pero aquí hay un pdf con alguna información ww.netlib.org/utk/people/JackDongarra/PAPERS/papi-linux.pdf. ¿Es esto lo que quieres? – Fred

+1

Fred, ¿está disponible de forma gratuita? Si es así, de dónde ¿Puedo descargarlo? – MetallicPriest

Respuesta

8

Puede usar Perfctr o PAPI si desea contar eventos de hardware en alguna parte del programa internamente (sin iniciar ninguna herramienta de terceros).

PERFCTR inicio rápido: http://www.ale.csce.kyushu-u.ac.jp/~satoshi/how_to_use_perfctr.htm

página PAPI: http://icl.cs.utk.edu/papi/

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

Si usted puede hacer esto externamente, hay un comando de Linux perf moderna.

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

+1

Es bueno saber sobre el comando 'perf'. No sabía que existía. –

0

check out oprofile todavía?

http://oprofile.sourceforge.net/

+3

Amplíe esta respuesta . Y Estás en lo cierto, pero hay muy poca información para aquellos que aún no entienden cómo funciona OProfile. –

3

El mejor enfoque va a utilizar Potencia en Linux como osgx mencionado, ya que forma parte del núcleo de Linux. Pero también se puede invocar en el código C/C++, y no es necesario que sea una llamada de estadísticas externa.

Simplemente descargue el código fuente del kernel y échele un vistazo. O, alternativamente, echar un vistazo a esta biblioteca pienso por Google:

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

que forma parte del proyecto perfmon2, pero está diseñado para trabajar con perf. Eche un vistazo al directorio perf_examples y obtendrá la idea. Así es como manejo las llamadas de rendimiento desde mis códigos C.

+0

¡Hola, Saman! ¿Pueden compartir un ejemplo simple de ejecución de un binario desde un programa y contar las "instrucciones retiradas" y escribirlas en un archivo? Traté de entender los ejemplos, pero o soy demasiado tonto o los ejemplos son demasiado vagos. Cualquier ayuda será muy apreciada. – Achilles

+0

modo de ejemplo sería: [Código] int main() { niño tenedor() { execv (binarios) } instrucciones recuento jubilados() escribir en un archivo() Fin } – Achilles

+0

Hola, puedes encontrar un samplke aquí: [link] (http://codepad.org/T5y4z0gV) –

Cuestiones relacionadas