2016-04-27 11 views
1

Ich frage mich, ob es eine Möglichkeit gibt, CPU-Cache von Bash zu fluten? Ich habe bemerkt, dass es eine Lösung dafür unter here gibt, aber ich verstehe seinen Ruby-Code nicht und ob dies eine korrekte Art ist, den Cache zu leeren.wie cpu cache aus bash flush?

+0

Warum möchten Sie den CPU-Cache leeren? Sie können es möglicherweise nicht vollständig auf jedem Multitasking-Betriebssystem erreichen, da es möglicherweise einen Kontextwechsel gibt, der entweder das Bit des CPU-Caches ändert, das Sie bei der Rückgabe erhalten, oder das ungültig machen, was Sie begonnen haben . –

+0

@RowlandShaw Ich plane ein Programm (trainiert ein Modell) auf einem Textkorpus. Das Programm beginnt mit einer geringeren Komplexität der Modellierung und erhöht schrittweise die Komplexität. Ich erweitere die Komplexität durch Setzen eines Parameters, den ich in eine for-Schleife in einem bash-Skript setze, das von niedriger zu hoher Komplexität reicht. Das Problem ist, dass das Timing, das für jede Komplexitätsebene angegeben wird, so aussehen muss, als ob es nichts im Cache gibt [um einen fairen Vergleich zwischen verschiedenen Komplexitäten zu ermöglichen]. – user3639557

+0

Sie müssen diesen Ruby-Code nicht verstehen. Der Code erzeugt nur viele NOPs und nutzloses XOR. Sie können das gleiche durch While-Schleifen emulieren und fast nichts 200000 Mal machen. – manzur

Antwort

0

können Sie diesen Befehl versuchen:

sync && echo 1 > /proc/sys/vm/drop_caches 

Von the documentation on kernel.org:

drop_caches

zu diesem Schreiben wird der Kernel verursachen sauber Caches zu löschen, sowie ausweisbar Bramme Objekte wie Dentries und Inodes. Einmal gelöscht, wird ihr Speicher frei.

Um freie pagecache: echo 1>/proc/sys/vm/drop_caches

regenerierbar Bramme Objekten zu befreien (schließt Dentries und Inodes): echo 2>/proc/sys/vm/drop_caches

Zum Freigeben von Plattenobjekten und Seitencache: echo 3>/proc/sys/vm/drop_caches

Dies ist ein zerstörungsfreier Vorgang und befreit keine verschmutzten Objekte. Um die Anzahl der von diesem Vorgang freigegebenen Objekte zu erhöhen, kann der Benutzer vor dem Schreiben in/proc/sys/vm/drop_caches `sync 'ausführen. Dadurch wird die Anzahl der fehlerhaften Objekte auf dem System minimiert und mehr Kandidaten erstellt, die fallen gelassen werden.

Diese Datei ist kein Mittel, um das Wachstum der verschiedenen Kernel-Caches (Inodes, Dentries, pagecache, etc ...) steuern Diese Objekte werden automatisch vom Kernel aufgearbeiteten, wenn der Speicher mit dem System an anderer Stelle benötigt wird.

Die Verwendung dieser Datei kann zu Leistungsproblemen führen. Da es zwischengespeicherte Objekte verwirft, kann es eine erhebliche Menge an E/A und CPU kosten, die abgelegten Objekte neu zu erstellen, besonders wenn sie stark beansprucht wurden. Aus diesem Grund wird Verwendung außerhalb einer Test- oder Debugumgebung nicht empfohlen.

+3

Das ist nicht über CPU-Cache, sondern Seitencache und VM-Cache. – manzur