terminado - salida del centro de clasificación
¿Qué significan los eventos de caché perf? (2)
Algunas respuestas:
-
L1
es el caché de nivel 1, el más pequeño y el más rápido.LLC
otro lado,LLC
refiere al último nivel de la jerarquía de caché , lo que denota el caché más grande pero más lento. -
i
vs.d
distingue el caché de instrucciones del caché de datos. Solo L1 se divide de esta manera, otros cachés se comparten entre datos e instrucciones. -
TLB
refiere al búfer de traducción , un caché que se usa cuando se asignan direcciones virtuales a las físicas. - Diferentes contadores de TLB, dependiendo de si la dirección mencionada se refiere a una instrucción o algunos datos.
- Para todos los accesos de datos, se mantienen diferentes contadores dependiendo de si la ubicación de la memoria dada fue leída, escrita o predefinida (es decir, recuperada para su lectura en algún momento posterior).
- El número de fallas indica la frecuencia con la que se accedió a un ítem de datos dado pero no estuvo presente en el caché.
Estoy tratando de averiguar por qué un programa C modificado se ejecuta más rápido que su parte de contador no modificada (estoy agregando muy pocas líneas de código para realizar algún trabajo adicional). En este contexto, sospecho que los " efectos de caché " son la explicación principal (caché de instrucciones). Así llego a la herramienta de perfiles perf
(https://perf.wiki.kernel.org/index.php/Main_Page) pero desafortunadamente no puedo entender el significado de sus resultados con respecto a las fallas de caché.
Se proporcionan varios eventos sobre el caché:
cache-references [Hardware event]
cache-misses [Hardware event]
L1-dcache-loads [Hardware cache event]
L1-dcache-load-misses [Hardware cache event]
L1-dcache-stores [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-prefetches [Hardware cache event]
L1-dcache-prefetch-misses [Hardware cache event]
L1-icache-loads [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
L1-icache-prefetches [Hardware cache event]
L1-icache-prefetch-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-load-misses [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-store-misses [Hardware cache event]
LLC-prefetches [Hardware cache event]
LLC-prefetch-misses [Hardware cache event]
dTLB-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-stores [Hardware cache event]
dTLB-store-misses [Hardware cache event]
dTLB-prefetches [Hardware cache event]
dTLB-prefetch-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
iTLB-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
node-loads [Hardware cache event]
node-load-misses [Hardware cache event]
node-stores [Hardware cache event]
node-store-misses [Hardware cache event]
node-prefetches [Hardware cache event]
node-prefetch-misses [Hardware cache event]
¿Dónde puedo encontrar una explicación sobre estos campos? El evento caché-errores siempre es más pequeño que otros eventos. ¿Qué mide este evento?
¿Cómo interpretar los 26,760 L1-icache-load-errores para ls frente a los 5,708 caché de fallos en el siguiente ejemplo?
perf stat -e L1-icache-load-misses ls
caches caches~ out
Performance counter stats for ''ls'':
26,760 L1-icache-load-misses
0.002816690 seconds time elapsed
perf stat -e cache-misses ls
caches caches~ out
Performance counter stats for ''ls'':
5,708 cache-misses
0.002822122 seconds time elapsed
Parece que piensa que el evento de cache-misses
es la suma de todos los demás tipos de fallas de caché ( L1-dcache-load-misses
, etc.). Eso en realidad no es cierto.
el evento cache-misses
representa la cantidad de acceso a la memoria que no pudo ser servida por ninguno de la memoria caché.
Admito que la documentación de perf no es la mejor.
Sin embargo, uno puede aprender mucho al respecto leyendo (asumiendo que ya tiene un buen conocimiento de cómo funcionan una CPU y una unidad de monitoreo de rendimiento, esto claramente no es un curso de arquitectura de computadora) el documento de la función perf_event_open ():
http://web.eece.maine.edu/~vweaver/projects/perf_events/perf_event_open.html
Por ejemplo, al leerlo, puede ver que el evento de cache-misses
mostrado por perf list corresponde a PERF_COUNT_HW_CACHE_MISSES