É possível desativar o cache L1 e / ou L2 no Ubuntu 14.04 (de preferência em uma linguagem de nível superior como Python)? Se sim, como?
Além disso, a desativação do cache diferirá significativamente entre diferentes arquiteturas? Nesse caso, estou mais interessado em um ARM Cortex-A15.
EDITAR
Enquanto pesquisava como desativar o cache, descobri o arquivo "drop_caches" em / proc / sys / vm / na documentação do kernel.org
"Escrever isso fará com que o kernel elimine caches limpos, além de objetos recuperáveis de lajes, como dentries e inodes. Uma vez descartados, sua memória fica livre".
...
"Este arquivo não é um meio de controlar o crescimento dos vários caches do kernel (inodes, dentries, pagecache, etc ...). Esses objetos são automaticamente recuperados pelo kernel quando a memória é necessária em outra parte do sistema."
Isso não parece o que estou procurando, além de não desabilitar o cache, pensei que a memória virtual reside no sistema operacional e não no hardware. Meu objetivo é desativar o cache para que a memória desejada seja procurada em outro lugar, como na RAM.
EDITAR
Para esclarecer, entendo o que a desativação do cache fará no sistema. No entanto, é uma técnica comum usada em aplicações espaciais para aumentar a confiabilidade de aplicações críticas à segurança. Aqui estão alguns recursos que documentam esse fenômeno:
Reduzindo falhas induzidas por radiação de software incorporado através de memórias de cache
Diretriz para teste de radiação no solo de microprocessadores no ambiente de radiação espacial
Existem até livros sobre o tema:
Efeitos de radiação ionizante em eletrônicos: de memórias a imagers
Respostas:
Você não pode fazer isso diretamente no Python, pois você precisa de um módulo do kernel para fazer isso (e direitos de root para carregar esse módulo).
Consulte http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 para saber o que é necessário para invalidar o cache L1 (invalidar, não desativar).
Arquiteturas de CPU diferentes (por exemplo, x86 x ARM) requerem código de montagem diferente (instruções da CPU) para desativar o cache. Não tenho certeza se o kernel do Linux tem alguma possibilidade de desativar os caches L1 / L2 / L3 / L4 e, se houver, acredito que seria usado apenas internamente por um curto período de tempo, pois a CPU está lenta sem esses caches.
Consulte Existe uma maneira de desativar o cache da CPU (L1 / L2) em um sistema Linux? para obter um link sobre como você pode desativar o cache em um sistema x86 / x64 (é necessário alterar o registro
cr0
). Para ARM, verifique o comportamento do cache desativado .Não tenho certeza de que você entende completamente o que os caches da CPU fazem. Você pode explicar por que você quer prejudicar o desempenho do seu sistema?
fonte
Você pode fazer isso com um pouco de código ASM, consulte o capítulo 11 do Guia de programação do sistema Intel
Eu não estou ciente de um módulo Python que implementa isso.
fonte