Sie können dies mit ein wenig ASM-Code erreichen, siehe Kapitel 11 des Intel System Programming Guide
11.5.3 Caching verhindern
Um die L1-, L2- und L3-Caches zu deaktivieren, nachdem sie aktiviert wurden und Cache-Füllungen erhalten haben, führen Sie die folgenden Schritte aus:1. Rufen Sie den No-Fill-Cache-Modus auf. (Setzen Sie das CD-Flag im Steuerregister CR0 auf 1 und das NW-Flag auf 0,2. Leeren Sie alle Caches mit der Anweisung WBINVD die Diskussion der Diskussion des TYPE-Felds und des E-Flags in Abschnitt 11.11.2.1, „IA32_MTRR_DEF_TYPE MSR“).
Mir ist kein Python-Modul bekannt, das dies implementiert.
Sie können dies nicht direkt in Python tun, da Sie dazu ein Kernelmodul benötigen (und Root-Rechte, um dieses Modul zu laden).
Unter http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 erfahren Sie, was erforderlich ist, um den L1-Cache ungültig zu machen (ungültig zu machen, nicht zu deaktivieren).
Unterschiedliche CPU-Architekturen (z. B. x86 vs. ARM) erfordern unterschiedlichen Assemblercode (CPU-Anweisungen), um den Cache zu deaktivieren. Ich bin mir nicht sicher, ob der Linux-Kernel die Möglichkeit hat, die L1/L2/L3/L4-Caches zu deaktivieren, und wenn dies der Fall wäre, würde er meiner Meinung nach nur für kurze Zeit intern verwendet, da die CPU langsam ist ohne diese Caches.
Siehe Gibt es eine Möglichkeit, den CPU-Cache (L1/L2) auf einem Linux-System zu deaktivieren? für einen Link, wie Sie den Cache auf einem x86/x64-System deaktivieren können (Sie müssen das Register cr0
ändern ). Für ARM check Cache deaktiviertes Verhalten.
Ich bin mir nicht sicher, ob Sie vollständig verstehen, was die CPU-Caches tun. Können Sie bitte erläutern, warum Sie die Leistung Ihres Systems beeinträchtigen wollen?