¿Es posible deshabilitar la caché L1 y / o L2 en Ubuntu 14.04 (preferiblemente en un lenguaje de nivel superior como Python)? ¿Si es así, cómo?
Además, ¿deshabilitar el caché diferirá significativamente entre diferentes arquitecturas? Si es así, estoy más interesado en un ARM Cortex-A15.
EDITAR
Mientras investigaba cómo deshabilitar el caché, descubrí el archivo "drop_caches" en / proc / sys / vm / de la documentación de kernel.org
"Escribir sobre esto hará que el núcleo deje caer cachés limpias, así como objetos de losas recuperables como dentries e inodes. Una vez que se caen, su memoria se libera".
...
"Este archivo no es un medio para controlar el crecimiento de los diversos cachés del núcleo (inodes, dentries, pagecache, etc.). Estos objetos son recuperados automáticamente por el núcleo cuando se necesita memoria en otra parte del sistema".
Esto no parece lo que estoy buscando, ya que no solo no parece que deshabilitaría el caché, pensé que la memoria virtual reside en el sistema operativo y no en el hardware. Mi objetivo es deshabilitar el caché para que la memoria deseada se deba buscar en otro lugar, como dentro de la RAM.
EDITAR
Para aclarar, entiendo lo que deshabilitar el caché le hará al sistema. Sin embargo, es una técnica común utilizada en aplicaciones espaciales para aumentar la fiabilidad de las aplicaciones críticas para la seguridad. Aquí hay algunos recursos que documentan este fenómeno:
Reducción de fallas inducidas por la radiación del software incorporado a través de memorias caché
Incluso hay libros sobre el tema:
Efectos de la radiación ionizante en electrónica: de recuerdos a imágenes
Respuestas:
No puede hacerlo directamente en Python, ya que necesita un módulo de kernel para hacerlo (y los derechos de root para cargar ese módulo).
Consulte http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 para saber qué se necesita para invalidar el caché L1 (invalidar, no deshabilitar).
Las diferentes arquitecturas de CPU (por ejemplo, x86 frente a ARM) requieren un código de ensamblaje diferente (instrucciones de CPU) para deshabilitar el caché. No estoy seguro de si el kernel de Linux tiene alguna posibilidad de deshabilitar los cachés L1 / L2 / L3 / L4 y si tuviera eso, creo que solo se usaría internamente por un corto período de tiempo, ya que la CPU es lenta sin estos escondites.
Consulte ¿Hay alguna forma de deshabilitar el caché de la CPU (L1 / L2) en un sistema Linux? para obtener un enlace sobre cómo puede deshabilitar la memoria caché en un sistema x86 / x64 (debe cambiar el registro
cr0
). Para ARM, compruebe el comportamiento deshabilitado de caché .No estoy seguro de que comprenda completamente lo que hacen los cachés de la CPU. ¿Puede explicar por qué quiere paralizar el rendimiento de su sistema?
fuente
Puede lograr esto con un pequeño código ASM, consulte el capítulo 11 de la Guía de programación del sistema Intel
No conozco un módulo de Python que implemente esto.
fuente