Wie kann ich den Cache des Dateisystems unter Linux vollständig leeren?


9

In einem Leistungstest möchte ich den Einfluss des Cache des Linux-Systems (einschließlich Seiten-Cache / Inode-Cache usw.) umgehen.

Ich habe das O_DIRECT-Flag ausprobiert, aber es hat sich herausgestellt, dass direkte E / A immer noch den Effekt eines Caches "genießen".

Gibt es eine gründliche Möglichkeit, den Effekt des Systemcaches zu schließen?


2
Was ist der Sinn eines solchen "unwirklichen" Leistungstests? Sie versuchen, etwas zu testen, das ein modernes Betriebssystem niemals zulassen würde.

Leider ist es überhaupt nicht unwirklich, es ist immer noch so, wie Kernel Aio heute funktioniert. Ich wünschte sooooooo, Mr.T würde erkennen, dass sich asynchrone E / A und Cache nicht gegenseitig ausschließen. Dies haben die Mitarbeiter von Microsoft bereits vor 15 Jahren erkannt (obwohl die Leistung vor Vista zugegebenermaßen enttäuschend sein kann, insbesondere bei gleichzeitiger Verwendung). Ein Inder hat vor Jahren auch einen Patch geschrieben, der jedoch abgelehnt wurde.

Antworten:


14

(es fällt tatsächlich so ..) laufen synczuerst, dann

kostenloser Seitencache:

echo 1 > /proc/sys/vm/drop_caches

freie Einträge und Inoden:

echo 2 > /proc/sys/vm/drop_caches

kostenloser Seitencache, Einträge und Inodes:

echo 3 > /proc/sys/vm/drop_caches

Dann können Sie mit einem sauberen Cache beginnen, aber das Caching funktioniert natürlich immer noch.


Ich habe irgendwo von dieser Methode gehört. aber es gibt keine solchen Dateien auf meinem Ubuntu 10.04. Also konnte ich die obigen Befehle nicht ausführen.

@tom_cat: Sie benötigen einen Kernel, der neuer als 2.6.16 ist, und Ubuntu 10.04 wurde mit 2.6.32 geliefert, wenn ich mich nicht irre, also sollte dies funktionieren. Ich habe gerade meine 11.04-Installation auf ihren Wert überprüft, der diesen Proc-Eintrag enthält (leider keine 10.04 mehr hier)

@Damon: Ja, du hast recht. vielen Dank. Ich habe festgestellt, dass ich mich auf einem Remotecomputer eines älteren Kernels angemeldet habe.

0

Nein, Sie können den Cache nicht umgehen. Sie können jedoch mit dem zusätzlichen Systemaufruf fsync (3) eine Dateisystemsynchronisierung erzwingen (dh den Cache leeren und die Daten auf die Festplatte schreiben).

Grüße, CK

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.