linux - picard - documentación de eventos de perforación
musicbrainz picard español (2)
La herramienta de ejecución utiliza contadores de rendimiento cuyos significados están documentados en los manuales del procesador. Para procesadores Intel, este es el Manual del desarrollador de arquitecturas Intel® 64 e IA-32: vol. 3B, Apéndice A.
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
Lo que complica algo las cosas es que perf usa un nombre "simbólico". La asignación entre esos nombres y el tipo de evento del procesador se puede encontrar en la fuente del kernel. Para procesadores Intel una vez más, esto se encuentra en arch / x86 / kernel / cpu / perf_event_intel.c.
Por ejemplo, los eventos de perf "stalled-cycles-frontend" se asignan a
/* UOPS_ISSUED.STALLED_CYCLES */
intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] =
X86_CONFIG(.event=0x0e, .umask=0x01, .inv=1, .cmask=1);
que está documentado como
Counts the number of cycles no Uops issued by the Register Allocation
Table to the Reservation Station, i.e. the UOPs issued from the front
end to the back end.
He buscado una explicación exhaustiva del significado de cada evento monitoreado por el comando perf stat;
Encontré un tutorial que explica bastante bien cómo usar diferentes funciones de la herramienta de perf. Sin embargo, no explica el significado de varios eventos que se pueden observar (¡y hay muchos!).
¿Alguien sabe dónde está una documentación bastante simple y completa sobre los eventos enumerados por el comando perf list?
En particular, estoy interesado en conocer el porcentaje de CPU utilizado por alguna aplicación que escribí. ¿Puedo medirlo directamente a través del reloj de la CPU o el reloj de tareas? ¿Cuál es el significado de estos dos eventos?
Gracias por adelantado
Hay un blog http://www.bnikolic.co.uk/blog/hpc-prof-events.html (" Cómo supervisar toda la gama de eventos de rendimiento de la CPU " de Bojan Nikolic) con listas de eventos de la CPU y el método de conversión. cualquier nombre de evento específico de la CPU (que se usa en los manuales de optimización de proveedores) en códigos de rendimiento sin formato. Los nombres simbólicos de perfomanía predefinidos le mostrarán solo información muy básica y, a veces, no se asignan a ningún evento de hardware real.
Bojan Nikolic sugiere el uso de la herramienta / biblioteca perfmon2 / libpfm de git: //perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4 que tiene una base de datos de eventos de rendimiento de la CPU (programa showevtinfo de los ejemplos de libpfm4; conoce muchas CPU y todos sus eventos) con algunas descripciones) y el convertidor del nombre del evento simbólico de la CPU en eventos brutos que pueden pasarse a perf
- los check_events
(desde el mismo lugar).
Y hay otra forma de explorar muchos eventos específicos de CPU (pero solo con las CPU de Intel, comenzando desde Nehalem: cualquier i3, i5, i7, cualquiera con 32 nm o menos pero no Atom, o cualquier CPU de escritorio producida después de 2008): la colección de scripts pmu-tools
de código abierto de Intel y ocperf.py
python wrapper alrededor de perf
. La colección se describe aquí por su autor, Andi Kleen: "pmu-tools para el perfilado específico de Intel sobre el rendimiento" ; alojado en http://github.com/andikleen/pmu-tools con la base de datos de eventos compatible y actualizada regularmente por Intel en 01.org ( https://download.01.org/perfmon ).
ocperf.py
aceptará cualquier nombre simbólico del manual de optimización de Intel (64-ia-32-architectures-optimization-manual.pdf, Número interno: 248966-029), si está implementado en su CPU.
También hay una secuencia de comandos toplev.py
de pmu-tools para investigar qué parte de la CPU limita su velocidad y luego profundizar para obtener la causa exacta. Solo funciona en Sandy Bridge, Ivy Bridge, Haswell y probablemente futuros núcleos (cualquier i3, i5, i7 con 4 dígitos, todas las copias de escritorio producidas después de 2011).
También puede consultar el analizador Gooda de Google: https://github.com/David-Levinthal/gooda (fue code.google.com/p/gooda/) que tiene varios archivos pdfs útiles, como:
- http://github.com/David-Levinthal/gooda/blob/master/gooda-analyzer/docs/Micro-architecture.pdf
- http://github.com/David-Levinthal/gooda/blob/master/gooda-analyzer/docs/CycleAccountingandPerformanceAnalysis.pdf
También tienen el visualizador Gooda - https://github.com/David-Levinthal/gooda/tree/master/gooda-visualizer que mostrará todos los eventos con js GUI. Es como un clon rápido, fácil de usar y de costo cero de la GUI básica de Vtune con desensamblador interactivo y motor de anotación de código.