Durchschreibbare RAM-Diskette oder massives Zwischenspeichern des Dateisystems?

10867
Will

Ich habe ein Programm, das das Dateisystem sehr stark beeinträchtigt, zufällig in eine Reihe von Arbeitsdateien liest und schreibt. Die Dateien sind insgesamt mehrere Gigabyte groß, aber ich kann den Arbeitsspeicher schonen, um sie alle im Hauptspeicher zu halten. Die Maschinen, auf denen dieses Programm läuft, sind in der Regel Ubuntu Linux-Boxen.

Gibt es eine Möglichkeit, das Dateisystem so zu konfigurieren, dass es einen sehr großen Cache hat und sogar Schreibvorgänge zwischenspeichert, damit sie später auf die Festplatte gelangen? Ich verstehe die Probleme mit Stromausfall oder so und bin bereit, das zu akzeptieren. Crashing beiseite, im Normalbetrieb sollten die Schreibvorgänge irgendwann die Platte erreichen!

Oder gibt es eine Möglichkeit, eine RAM-Disk zu erstellen, die auf die reale Festplatte schreibt?

5

7 Antworten auf die Frage

5
Anon

Are you seeing high numbers of IO waits, indicating that the read and write requests are not being satisfied via existing buffers? As others have noted, Linux is very good about giving spare RAM to buffers, so you should check this first.

If you're not seeing IO waits, then it's possible that your performance problems (do you even have problems? your question doesn't say) are due to kernel context switches from lots of small program-initiated IO operations. In this case you can gain a significant performance boost by rewriting your application to use memory-mapped files. But that's more of a question for StackOverflow.

hmm ... die letzte Antwort vor mir war vor 3 Monaten, OP wurde nicht mehr gesehen, seit die Frage gepostet wurde, keine andere offensichtliche Aktivität, aber sie erschien auf der Titelseite ... Ich denke, das System versucht, Antworten auf Fragen zu erhalten Anon vor 13 Jahren 0
Das ist genau das, wofür die Community-Community Benutzer ist - unbeantwortete Fragen stoßen. http://stackoverflow.com/users/-1/community Corey vor 13 Jahren 0
: Achselzucken: Die OP ist längst vorbei, und niemandem scheint es egal zu sein Anon vor 13 Jahren 0
Ich interessiere mich und ich bin zurück; Ich werde eine Weile brauchen, um Ihre Frage zu beantworten und sie fair zu beantworten. Bitte haben Sie etwas Geduld Will vor 13 Jahren 0
5
RolKau

Erwägen Sie die Verwendung eines ext4-Dateisystems mit schnellen und losen Mount-Optionen:

noatime,data=writeback,nobh,barrier=0,commit=300 

das Schreiben von Daten aus dem Cache zurück auf die physische Festplatte zu verschieben.

Ansonsten könnten Sie aufsein tmpfs-Dateisystem über Ihr reguläres Dateisystem mit Union-Mount einrichten, alle Schreibvorgänge durchführen und die tmpfs anschließend wieder mit dem realen Dateisystem zusammenführen.

Bedeutung der Optionen: http://www.mjmwired.net/kernel/Documentation/filesystems/ext3.txt netvope vor 13 Jahren 3
1
Hamish Downer

Linux verwendet standardmäßig einen beliebigen freien RAM-Speicher als Dateicache, daher ist keine Konfiguration dafür erforderlich.

Sie können erwägen, ext4 als Dateisystem zu verwenden. Es verwendet eine Reihe von Techniken, um den Festplattenzugriff zu beschleunigen, einschließlich der verzögerten Zuweisung, die:

Dies führt dazu, dass Zuordnungen in größeren Durchläufen zusammengeführt werden. Durch diese verzögerte Verarbeitung wird die CPU-Auslastung reduziert und die Festplattenfragmentierung verringert, insbesondere bei langsam wachsenden Dateien. Dies kann auch dazu beitragen, Zuordnungen zusammenhängend zu halten, wenn mehrere Dateien gleichzeitig wachsen.

Datenverlust ist aufgrund der Verwendung von Journaling ziemlich selten .

Ext4 ist jetzt das Standard-Dateisystem in den letzten Linux-Versionen, obwohl Sie wahrscheinlich sicherstellen möchten, dass der verwendete Kernel mindestens 2.6.30 ist

1
gthomas

Verwenden Sie mmap für diese Dateien - es verwendet die überlegene Zwischenspeicherung des Kernels, wodurch es wesentlich schneller wird.

1
Bytemain

Sie können meine Antwort hier sehen: RAM für Cache und Puffer reservieren . Wenn Sie Speicher für Cache und Puffer reservieren möchten: echo 10> / proc / sys / vm / vfs_cache_pressure, wenn 100 der Standardwert ist. Dann können Sie den von jeder App verwendeten maximalen RAM begrenzen: echo 8192> / proc / sys / vm / max_map_count.

0
nik

Linux verwendet Ihren Arbeitsspeicher sehr effizient .
Ich denke nicht, dass Sie wirklich daran arbeiten müssen, Dinge mit großen Dateien zwischenzuspeichern.
Um dies selbst herauszufinden, probieren Sie diese Dinge aus .

Der Linux-Festplattencache ist sehr unauffällig. Es verwendet Ersatzspeicher, um die Datenträgerzugriffsgeschwindigkeit erheblich zu erhöhen und Speicherplatz von Anwendungen zu nehmen.

Prüfen Sie, wie viel RAM Ihr System hat und ob Sie es vergrößern können.
Es ist keine RAM-Platte für diesen Zweck erforderlich.
Der Festplattencache funktioniert gut mit dem gesamten verfügbaren RAM-Speicher.

Ich glaube nicht, dass es hier um Linux geht, das RAM effizient nutzt, sondern um das Zwischenspeichern von Festplatten, wie ein Linux-Äquivalent zu FlashFire: http://flashfire.org/xe/ vor 14 Jahren 0
0
Martin

RapidCache bietet eine RAM-Disk mit Durchschreiben, befindet sich aber derzeit in der Beta- Phase .