PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cache leeren


rotalever
2007-05-19, 18:36:08
Wenn ich in Linux eine ca. 200MB große Datei einlese dauert das ein paar Sekunden (wen wunderts ;) ). Wenn ich es allerdings danach ein zweites Mal mit derselben Datei mache geht es wesentlich schneller. Was folgere ich daraus? Die Datei wird zwischengespeichert, vermutlich im RAM. Diese Funktion ist ja auch irgendwie sinnvoll, aber für Testzwecke eben nicht. Mit welcher Möglichkeit kann ich diese Zwischenspeicherung wieder leeren, sodass der Zugriff wieder wirklich auf die Platte geht? Ein Neustart würde es natürlich bringen, aber das dauert mir dann wiederum zu lange.

Gast
2007-05-19, 21:14:53
versuchs mal mit nem "touch" auf die datei, evtl denkt dann der cache dass die datei geändert wurde.

rotalever
2007-05-19, 21:19:07
Hab ich schon, bringt nix.

klutob
2007-05-19, 21:52:55
Hi,

Die Kernel Variable "/proc/sys/vm/drop_caches" müßte das gewünschte Verhalten erzwingen können.

Hier sind die Werte und deren Auswirkungen genau beschrieben, den "sync" nicht vergessen!
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html

rotalever
2007-05-19, 22:20:37
Tatsächlich, es funktioniert! Was würde passieren, wenn man das sync vergisst?

klutob
2007-05-20, 15:01:49
Tatsächlich, es funktioniert! Was würde passieren, wenn man das sync vergisst?

Es würde nicht der gesamte File-Cache freigegeben werden, offene/dirty Handles bleiben ohne "sync" im Cache. Diese Maßnahme ist, wie auf der Seite beschrieben, sonst völlig harmlos in Bezug auf die Konsistenz der Daten..

rotalever
2007-05-20, 19:55:12
Na dann... Ist auf jeden Fall eine praktische Methode, vor allem wenn man Programme testen möchte, die viel mit Dateien arbeiten und deren Ablauf man beschleunigen möchte. Ansonsten bekommt man ja keine realistischen Messwerte.