Puoi farlo con un po' di codice ASM, vedi il capitolo 11 della Intel System Programming Guide
11.5.3 Impedire la memorizzazione nella cache
Per disabilitare le cache L1, L2 e L3 dopo che sono state abilitate e hanno ricevuto il riempimento della cache, eseguire i seguenti passaggi:1. Entra nella modalità cache senza riempimento. (Impostare il flag CD nel registro di controllo CR0 su 1 e il flag NW su 0.2. Svuotare tutte le cache utilizzando l'istruzione WBINVD.3. Disabilitare gli MTRR e impostare il tipo di memoria predefinito su uncached o impostare tutti gli MTRR per il tipo di memoria uncached (vedere la discussione della discussione del campo TYPE e del flag E nella Sezione 11.11.2.1,“IA32_MTRR_DEF_TYPE MSR”).
Non sono a conoscenza di un modulo Python che lo implementa.
Non puoi farlo direttamente in Python, poiché hai bisogno di un modulo del kernel per farlo (e dei diritti di root per caricare quel modulo).
Vedi http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 per ciò che serve per invalidare la cache L1 (invalidare, non disabilitare).
Diverse architetture CPU (ad esempio x86 vs ARM) richiedono codice assembly diverso (istruzioni CPU) per disabilitare la cache. Non sono sicuro che il kernel Linux abbia la possibilità di disabilitare le cache L1/L2/L3/L4 e se lo avesse, credo che verrebbe utilizzato internamente solo per un breve periodo di tempo, poiché la CPU è lenta senza queste cache.
Vedi C'è un modo per disabilitare la cache della CPU (L1/L2) su un sistema Linux? per un collegamento su come disabilitare la cache su un sistema x86/x64 (è necessario modificare il registro cr0
). Per ARM controlla il comportamento disabilitato della cache.
Non sono sicuro che tu capisca completamente cosa fanno le cache della CPU. Puoi spiegare perché vuoi paralizzare le prestazioni del tuo sistema?