Apakah mungkin untuk menonaktifkan cache L1 dan / atau L2 pada Ubuntu 14.04 (lebih disukai dalam bahasa tingkat yang lebih tinggi seperti Python)? Jika ya, bagaimana caranya?
Selain itu, apakah penonaktifan cache akan berbeda secara signifikan antara arsitektur yang berbeda? Jika demikian, saya lebih tertarik pada ARM Cortex-A15.
EDIT
Ketika meneliti cara menonaktifkan cache, saya menemukan informasi tentang file "drop_caches" di / proc / sys / vm / dari dokumentasi kernel.org
"Menulis ini akan menyebabkan kernel menjatuhkan cache bersih, serta objek slab yang dapat direklamasi seperti gigi palsu dan inode. Setelah dijatuhkan, ingatan mereka menjadi bebas."
...
"File ini bukan sarana untuk mengontrol pertumbuhan berbagai cache kernel (inode, dentries, pagecache, dll ...) Objek-objek ini secara otomatis diperoleh kembali oleh kernel ketika memori diperlukan di tempat lain pada sistem."
Ini tidak seperti apa yang saya cari karena tidak hanya sepertinya ini tidak akan menonaktifkan cache, saya berpikir bahwa memori virtual berada dalam sistem operasi dan bukan pada perangkat keras. Tujuan saya adalah untuk menonaktifkan cache sehingga memori yang diinginkan harus dicari di tempat lain, seperti di dalam RAM.
EDIT
Untuk mengklarifikasi, saya mengerti apa yang akan menonaktifkan cache untuk sistem. Namun, ini adalah teknik umum yang digunakan dalam aplikasi luar angkasa untuk meningkatkan keandalan untuk aplikasi keamanan-kritis. Berikut adalah beberapa sumber yang mendokumentasikan fenomena ini:
Mengurangi kegagalan yang disebabkan oleh radiasi perangkat lunak yang tertanam melalui memori cache
Pedoman Pengujian Radiasi Tanah Mikroprosesor di Lingkungan Radiasi Ruang Angkasa
Bahkan ada buku dengan topik:
Efek Radiasi Pengion dalam Elektronik: Dari Kenangan ke Imager
Jawaban:
Anda tidak dapat melakukannya secara langsung dalam Python, karena Anda memerlukan modul kernel untuk melakukan itu (dan hak root untuk memuat modul itu).
Lihat http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 untuk mengetahui apa yang diperlukan untuk membatalkan cache L1 (tidak valid, tidak menonaktifkan).
Arsitektur CPU yang berbeda (misalnya x86 vs ARM) memerlukan kode perakitan yang berbeda (instruksi CPU) untuk menonaktifkan cache. Saya tidak yakin apakah kernel Linux memiliki kemungkinan untuk menonaktifkan cache L1 / L2 / L3 / L4 dan jika ada, saya percaya itu hanya akan digunakan secara internal untuk waktu yang singkat, karena CPU lambat tanpa cache ini.
Lihat Apakah ada cara untuk menonaktifkan cache CPU (L1 / L2) pada sistem Linux? untuk tautan tentang cara Anda dapat menonaktifkan cache pada sistem x86 / x64 (Anda perlu mengubah register
cr0
). Untuk ARM, periksa perilaku Cache yang dinonaktifkan .Saya tidak yakin Anda benar-benar mengerti apa yang dilakukan cache CPU. Bisakah Anda jelaskan mengapa Anda ingin melumpuhkan kinerja sistem Anda?
sumber
Anda dapat melakukannya dengan sedikit kode ASM, lihat bab 11 dari Panduan Pemrograman Sistem Intel
Saya tidak mengetahui modul Python yang mengimplementasikan ini.
sumber