Bernhard Häussner
Tags: Artikel mit dem Tag «Shell» durchstöbern

Ramdisc - Maximum Performance

05.11.2008, 21:09

Wow, wow, wow. RAM wird diese Tage immer billiger, man bekommt die 8 GB schon für um die 80 Euro. Wer es wirklich übertreiben will kann natürlich auch auf die 32 GB kommen. Da fragt man sich dann auch langsam, wohin mit dem ganzen RAM. Wenn ich ehrlich bin, komme ich mir langsam ein bisschen seltsam vor mit meinen bescheidenen 2 GB. Aber auf der anderen Seite brauche ich meist nichtmal die zwei, und was soll man dann mit den übrigen 30 GB RAM machen? Da kommt dann z.B. die Ramdisk ins Spiel:

Anstatt die Dateien auf den langsamen Festplatten zu lassen, kann man sich natürlich eine flash-Festplatte kaufen. Aber wenn der RAM für heutige Anwendungen sowieso eher überdimensioniert ist, warum nicht gleich auf den RAM schreiben? Ein Nachteil: Man muss den Platz auf der Festplatte reservieren für Backups und Reboots. Denn sollte man seinen Rechner mal neu starten sind die Daten, da im RAM, eigentlich weg. Noch ärgerlicher, wenn der Saft weg beleibt. Doch mit ein paar kleinen Tricks kommt man da auch drum rum.

Doch erstmal zum Einrichten der Ramdisk (unter OpenSUSE). Da OpenSUSE anders als z.B. Debian standardmäßig keine Ramdisks zur Verfügung stellt, reicht uns für den Anfang eine kleine (1 GB) tmpfs-Partition. (Verzeichnisse natürlich angleichen)

mkdir ramd
cat /etc/fstab
cat /etc/fstab > fstab.txt
echo 'tmpfs /home/amoebe/Desktop/ramd tmpfs size=1g 0 0' >> /etc/fstab
mount /home/amoebe/Desktop/ramd/
df -T ramd/
# Ausgabe:
# Dateisystem   Typ    1K-Blöcke   Benutzt Verfügbar Ben% Eingehängt auf
# tmpfs        tmpfs     1048576         0   1048576   0% /home/amoebe/Desktop/ramd

Na also. Kaum kopiere ich eine größere (~700 MB) Datei in das Verzeichnis, sehe ich im Systemmonitor, wie der ausgelastete RAM-Platz hoch geht... Nachdem ich nun 2 Kopien der Datei habe, eine auf der Festplatte und eine im RAM, lasse ich md5sum als Benchmark drüber laufen. Zuerst die Datei auf der Festplatte:

time md5sum groß.avi 
# 75dd50ae473ccba7e082aaa681853919  groß.avi 
# 
# real	0m29.759s
# user	0m1.956s
# sys	0m0.768s
time md5sum groß.avi 
# 75dd50ae473ccba7e082aaa681853919  groß.avi 
# 
# real	0m21.963s
# user	0m1.728s
# sys	0m0.584s

Wie man sieht, jedes Mal so um die 30 Sekunden. Doch ich musste leider mit ansehen, wie der Inhalt meiner schönen Ramdisk auf der Festplatte in den Swap geschrieben wurde, da die Datei sonst nicht mehr in den RAM gepasst hätte.

Jetzt wollte ich natürlich wissen, wie schnell die Ramdisk ist. Beim ersten Aufruf konnte ich schön den Swap zurück auf 0 gehen sehen, was natürlich auch einige Zeit in Anspruch genommen hat:

time md5sum vtemp/groß.avi 
# 75dd50ae473ccba7e082aaa681853919  ramd/groß.avi 
# real	0m35.570s
# user	0m2.128s
# sys	0m2.168s

Nicht sehr überzeugend. Doch die Ramdisk war ja nicht im RAM, konnte also nicht ihre ganze Stärke ausspielen. Doch jetzt, da wir die Datei wieder im RAM haben, sieht das Ganze schon besser aus:

time md5sum vtemp/groß.avi 
# 75dd50ae473ccba7e082aaa681853919  ramd/groß.avi 
# 
# real	0m2.536s
# user	0m2.040s
# sys	0m0.416s
time md5sum vtemp/groß.avi 
# 75dd50ae473ccba7e082aaa681853919  ramd/groß.avi 
# 
# real	0m2.444s
# user	0m1.984s
# sys	0m0.436s

Das bedeutet, wenn wir eine Ramdisk benutzen müssen wir noch mindestens so viel Platz im RAM lassen, wie unsere normale Arbeitsumgebung benötigt. Interessant, dass md5sum keine Kopie der Datei im RAM gemacht hat.

Jetzt könnte man natürlich noch mit einem Cronjob die Ramdisk regelmäßig mit der Festplatte abgleichen. Oder mit einem SVN-Repositry. Dann kann man sogar Änderungen verfolgen und rückgängig machen. Beim Herunterfahren kopiert man den Inhalt der Ramdisk auf die Felsplatte und lädt ihn beim hochfahren wieder. Das könnte natürlich bei größeren Datenmengen etwas lästig werden, aber wenn man einen Suspend-Hook bastelt, der den Inhalt kurz mit dem Repository abgleicht, dann kann man den Computer beruhigt in Suspend 2 RAM fahren ohne dass Datenverlust zu befürchten ist, falls doch mal jemand übers Kabel stolpert o.ä.

Interessant könnte es natürlich werden, wenn man beim Booten alle Programme in die Ramdisk speichert. Also mein gesamtes OS mit allen Programmen hat zurzeit 9,1 GB. Bei den 8 GB wird es also ein bisschen sehr knapp, aber bei 12 GB sollte es schon ganz gut klappen. Dann will ich gar nicht wissen, wie schnell sich die Programme laden.

Andrerseits ist das alles irgendwie noch ein bisschen sehr aufwändig, da lasse ich lieber alle Programme laufen und baue mir ein ordentliches RAID5 auf, dann kann (fast) nichts schief gehen, und schnell ist es auch noch. Wenn ich allerdings mal ein größeren RAM habe und dann an einer größeren Datei arbeite, vor allem mit unterschiedlichen Programmen, aber nicht gleichzeitig, könnte ich auch die Ramdisk zurückgreifen. Beim Filme schneiden könnte das äußerst nützlich sein.

Kommentare: keine
« Vorherige Seite [ Seite 1 2 3 ]
 
Χρόνογραφ
© 2008-2017 by Bernhard Häussner - Impressum - Login
Kurz-Link zur Homepage: http://1.co.de/