Pregunta Perfilando memoria caché / memoria de la CPU desde el sistema operativo / aplicación?


Deseo escribir software que esencialmente podría perfilar el caché de la CPU (L2, L3, posiblemente L1) y la memoria, para analizar el rendimiento.

¿Estoy en lo cierto al pensar que esto no se puede hacer porque no hay acceso para el software al contenido del caché?

Otra forma de redactar mi Q: ¿hay alguna manera de saber, desde el nivel de OS / Aplicación, qué datos se han cargado en el caché / memoria?

EDITAR: Sistema operativo Windows o Linux y CPU Intel Desktop / Xeon


7
2018-04-12 11:21


origen


Respuestas:


Es posible que desee ver la PMU de Intel, es decir, la Unidad de supervisión del rendimiento. Algunos procesadores tienen uno. Es un grupo de registros de propósito especial (Intel los llama Registros específicos de modelo o MSR) que puede programar para contar eventos, como errores de caché, utilizando el RDMSR y WRMSR instrucciones.

Aquí hay un documento sobre Análisis de rendimiento en i7 y Xeon 5500.

Es posible que desee comprobar Intel Monitor de contador de rendimiento, que básicamente son algunas rutinas que resumen la PMU, que puede usar en una aplicación de C ++ para medir varias métricas de rendimiento en vivo, incluidas las fallas de caché. También tiene algunas herramientas GUI / línea de comando para uso independiente.

Aparentemente, el núcleo de Linux tiene una función para manipular MSR.

Hay otras utilidades / API que también usan la PMU: perf, PAPI.


7
2018-04-12 13:03



El rendimiento de la memoria caché generalmente se mide en términos de tasa de acierto y error.

Hay muchas herramientas para hacer esto por ti. Mira cómo Valgrind hace perfiles de caché.

también el rendimiento del caché generalmente se mide por programa. Los programas bien escritos darán como resultado un menor número de fallas de caché y un mejor rendimiento de la caché, y viceversa, para un código mal escrito.

Midiendo el velocidad de caché real es el dolor de cabeza de los fabricantes de hardware y puede consultar sus manuales para conocer este valor.

Callgrind/Cachegrind combinación puede ayudarlo a rastrear éxitos / errores de caché


2
2018-04-12 11:47



Esta tiene algunos ejemplos. También se puede usar TAU, un generador de perfiles de código abierto que funciona usando PAPI.

Sin embargo, si desea escribir un código para medir las estadísticas de caché, puede escribir un programa usando PAPI. PAPI permite al usuario acceder a los contadores de hardware sin necesidad de conocer la arquitectura del sistema. PMU utiliza registros específicos del modelo, por lo tanto, debe tener el conocimiento de los registros que se utilizarán.

Perf permite la medición de L1 y LLC (que es L2), Cachegrind, por otro lado, permite al usuario medir L1 y LLC (que puede ser L2 o L3, cualquiera que sea el nivel más alto de caché). Use Cachegrind solo si no necesita resultados más rápidos porque Cachegrind ejecuta el programa aproximadamente 10 veces más lento.


0
2018-03-20 09:58