Можно ли отключить кэш L1 и / или L2 в Ubuntu 14.04 (желательно на языке более высокого уровня, например Python)? Если так, то как?
Кроме того, будет ли существенно различаться отключение кэша в разных архитектурах? Если это так, меня больше интересует ARM Cortex-A15.
РЕДАКТИРОВАТЬ
При изучении того, как отключить кэш, я узнал о файле drop_caches в / proc / sys / vm / из документации kernel.org
«Запись этого приведет к тому, что ядро удалит чистые кэши, а также исправляемые объекты слэба, такие как дентрии и иноды. После удаления их память станет свободной».
...
«Этот файл не является средством управления ростом различных кэшей ядра (inode, dentries, pagecache и т. Д.). Эти объекты автоматически восстанавливаются ядром, когда требуется память в другом месте системы».
Это не похоже на то, что я ищу, поскольку не только не похоже, что это отключило бы кеш, я думал, что виртуальная память находится внутри операционной системы, а не на оборудовании. Моя цель - отключить кеш, чтобы искомая память искалась в другом месте, например, в ОЗУ.
РЕДАКТИРОВАТЬ
Чтобы уточнить, я понимаю, что отключение кеша будет делать для системы. Тем не менее, это распространенный метод, используемый в космических приложениях для повышения надежности для критически важных приложений. Вот некоторые ресурсы, которые документируют это явление:
Снижение радиационных отказов встроенного программного обеспечения благодаря кэш-памяти
Руководство по наземным радиационным испытаниям микропроцессоров в космической радиационной среде
Есть даже книги на эту тему:
Эффекты ионизирующего излучения в электронике: от воспоминаний к тепловизорам
Ответы:
Вы не можете сделать это напрямую в Python, так как для этого нужен модуль ядра (и права root для загрузки этого модуля).
См. Http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21, чтобы узнать, как сделать недействительным кэш L1 (сделать недействительным, не отключить).
Различные архитектуры ЦП (например, x86 против ARM) требуют различного кода сборки (инструкции ЦП) для отключения кеша. Я не уверен, есть ли у ядра Linux какая-либо возможность отключить кеши L1 / L2 / L3 / L4, и если это будет так, я считаю, что он будет использоваться внутренне только в течение короткого периода времени, так как процессор медленный без этих кешей.
См. Есть ли способ отключить кэш процессора (L1 / L2) в системе Linux? для ссылки на то, как вы можете отключить кэш в системе x86 / x64 (вам нужно изменить регистр
cr0
). Для ARM проверьте отключенное поведение Cache .Я не уверен, что вы полностью понимаете, что делают кэши процессора. Не могли бы вы уточнить, почему вы хотите нанести ущерб производительности вашей системы?
источник
Вы можете сделать это с помощью небольшого кода ASM, см. Главу 11 Руководства по системному программированию Intel.
Я не знаю о модуле Python, который реализует это.
источник