Czy można wyłączyć pamięć podręczną L1 i / lub L2 w systemie Ubuntu 14.04 (najlepiej w języku wyższego poziomu, takim jak Python)? Jeśli tak to jak?
Ponadto, czy wyłączenie pamięci podręcznej różni się znacznie między różnymi architekturami? Jeśli tak, bardziej interesuje mnie ARM Cortex-A15.
EDYTOWAĆ
Podczas badania, jak wyłączyć pamięć podręczną, dowiedziałem się o pliku „drop_caches” w / proc / sys / vm / z dokumentacji kernel.org
„Zapisanie tego spowoduje, że jądro będzie upuszczać czyste pamięci podręczne, a także obiekty płytowe, takie jak dentries i i-węzły. Można je odzyskać.”
...
„Ten plik nie jest środkiem do kontrolowania wzrostu różnych pamięci podręcznych jądra (i-węzły, dentries, pagecache itp.). Obiekty te są automatycznie odzyskiwane przez jądro, gdy pamięć jest potrzebna gdzie indziej w systemie.”
Nie wydaje mi się, że tego szukam, ponieważ nie tylko nie wydaje się, aby wyłączało pamięć podręczną, myślałem, że pamięć wirtualna znajduje się w systemie operacyjnym, a nie w sprzęcie. Moim celem jest wyłączenie pamięci podręcznej, aby żądanej pamięci szukać w innym miejscu, na przykład w pamięci RAM.
EDYTOWAĆ
Aby to wyjaśnić, rozumiem, co wyłączenie systemu pamięci podręcznej może zrobić w systemie. Jest to jednak powszechna technika stosowana w aplikacjach kosmicznych w celu zwiększenia niezawodności w aplikacjach o kluczowym znaczeniu dla bezpieczeństwa. Oto niektóre zasoby dokumentujące to zjawisko:
Istnieją nawet książki na ten temat:
Efekty promieniowania jonizującego w elektronice: od wspomnień do rejestratorów
Odpowiedzi:
Nie możesz tego zrobić bezpośrednio w Pythonie, ponieważ potrzebujesz do tego modułu jądra (i praw root do załadowania tego modułu).
Zobacz http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21, aby dowiedzieć się, co trzeba zrobić, aby unieważnić pamięć podręczną L1 (unieważnij, nie wyłącz).
Różne architektury procesorów (np. X86 vs ARM) wymagają innego kodu asemblera (instrukcji procesora), aby wyłączyć pamięć podręczną. Nie jestem pewien, czy jądro Linuksa ma jakąkolwiek możliwość wyłączenia pamięci podręcznej L1 / L2 / L3 / L4 i jeśli tak, uważam, że byłby używany wewnętrznie przez krótki okres czasu, ponieważ procesor jest wolny bez tych skrzynek.
Zobacz Czy istnieje sposób na wyłączenie pamięci podręcznej procesora (L1 / L2) w systemie Linux? link, w jaki sposób można wyłączyć pamięć podręczną w systemie x86 / x64 (należy zmienić rejestr
cr0
). W celu sprawdzenia ARM zachowanie wyłączonej pamięci podręcznej .Nie jestem pewien, czy w pełni rozumiesz, co robią pamięci podręczne procesora. Czy możesz wyjaśnić, dlaczego chcesz obniżyć wydajność swojego systemu?
źródło
Możesz to zrobić za pomocą małego kodu ASM, patrz rozdział 11 Przewodnika po programowaniu Intel System
Nie znam modułu Python, który to implementuje.
źródło