Vous pouvez accomplir cela avec un peu de code ASM, voir le chapitre 11 du Guide de programmation système Intel
11.5.3 Empêcher la mise en cache
Pour désactiver les caches L1, L2 et L3 après qu'ils ont été activés et qu'ils ont reçu des remplissages de cache, effectuez les étapes suivantes :1. Entrez dans le mode de cache sans remplissage. (Définissez l'indicateur CD dans le registre de contrôle CR0 sur 1 et l'indicateur NW sur 0,2. Videz tous les caches à l'aide de l'instruction WBINVD.3. Désactivez les MTRR et définissez le type de mémoire par défaut sur non mis en cache ou définissez tous les MTRR pour le type de mémoire non mise en cache (voir la discussion de la discussion sur le champ TYPE et le drapeau E dans la Section 11.11.2.1, « IA32_MTRR_DEF_TYPE MSR »).
Je ne connais pas de module Python qui implémente cela.
Vous ne pouvez pas le faire directement en Python, car vous avez besoin d'un module du noyau pour le faire (et des droits root pour charger ce module).
Voir http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 pour savoir ce qu'il faut pour invalider le cache L1 (invalider, pas désactiver).
Différentes architectures de CPU (par exemple x86 vs ARM) nécessitent un code d'assemblage différent (instructions CPU) pour désactiver le cache. Je ne sais pas si le noyau Linux a la possibilité de désactiver les caches L1/L2/L3/L4 et s'il en avait, je pense qu'il ne serait utilisé qu'en interne pendant une courte période, car le CPU est lent sans ces caches.
Voir Existe-t-il un moyen de désactiver le cache CPU (L1/L2) sur un système Linux ? pour un lien sur la façon dont vous pouvez désactiver le cache sur un système x86/x64 (vous devez changer le registre cr0
). Pour ARM, cochez le comportement Cache désactivé.
Je ne suis pas sûr que vous compreniez parfaitement ce que font les caches CPU. Pouvez-vous expliquer pourquoi vous voulez paralyser les performances de votre système ?