RAM Disk - Datendurchsatz unter Linux

Ronny Buchmann ronny-vlug at vlugnet.org
Tue Oct 5 18:55:45 UTC 2004


On Tuesday 05 October 2004 11:48, Alexander Finger wrote:
> > > 3. Datendurchsatz
> > >
> > > Tests haben gezeigt, dass der Durchsatz der RAM-Disk bei ca. 50 MB/s
> > > liegt... das finde ich erstaunlich wenig. Ist aber identisch mit dem
> > > Durchsatz einer Datei, die aus dem Cache gelesen wird.
> >
> > Wie kommst du denn auf diese Werte?
>
> test ist eine 100 MB Datei.
>
> Mein Test:
>
> $ time dd if=test of=/dev/null
> 204800+0 records in
> 204800+0 records out
>
> real    0m2.129s
> user    0m0.718s
> sys     0m1.407s
damit liest du in 512-Byte Blöcken, die Blockgröße des Dateisystems ist AFAIK 
unerheblich.

>
> Dein Test:
>
> $ time dd if=test of=/dev/null bs=1M
> 100+0 records in
> 100+0 records out
>
> real    0m0.199s
> user    0m0.001s
> sys     0m0.198s
>
> Wie Du siehst, ist es nicht ganz egal wie man auf die Dateien im
> Dateisystem "zugreift". Normale Programme lesen mit der
> Standard-Blocksize. Es ist diese Leistung, bzw. eben die Nicht-Leistung
> die mich hier vor Probleme stellt.
Wie die reale Anwendung liest, siehst du mit "strace -f trace=file program".

> Vielleicht ist auch die Wahl des Dateisystem nicht unerheblich...
> Beispielen folgend habe ich mich für ext2 entschieden... gibt es eine
> Alternative?
Ich denke das ist für diesen Fall das Sinnvollste.
Evtl kannst du auch mal ramfs probieren (das ist eine dynamische Ramdisk)

> > In einem lurzen Test erhalte ich ein deutlich anderes Ergebnis:
> > [ronny at bserv tmp]$ time dd of=/dev/zero if=test bs=1M count=100
> > 100+0 Records ein
> > 100+0 Records aus
> >
> > real    0m1.094s
> > user    0m0.000s
> > sys     0m0.260s
das ist übrigens von Platte

> Pjah. Jetzt wissen wir schon mal, dass es gravierende Unterschiede gibt,
> abhängig davon mit welcher Blocksize gearbeitet wird. Nicht jede
> Software ist selbst geschrieben, daher ist diese Tuning-Option
> verschlossen. Noch dazu kann man ein RAM-Disk-Filesystem nicht mit einer
> anderen Blocksize als 1K anlegen.
s.o. die Blockgröße des Dateisystems ist dabei kaum von Bedeutung.
Häufig lesen Anwendungen ganze Dateien auf einmal, oder Blöcke von 4KB.
siehe "man 2 read"

Ich denke das Problem ist dein "Benchmark" und nicht die Ramdisk.

-- 
http://LinuxWiki.org/RonnyBuchmann




More information about the Fedora-de-list mailing list