RAM Disk - Datendurchsatz unter Linux

Alexander Finger finger at fotofinder.net
Tue Oct 5 09:48:28 UTC 2004


Hallo!

On Mon, 2004-10-04 at 22:48, Ronny Buchmann wrote:
> On Wednesday 29 September 2004 14:06, Alexander Finger wrote:
> > Hallo,
> >
> > ich habe hier einen Server unter anderem mit einer 2 GB RAM-Disk am
> > laufen, dabei sind mir folgende Dinge aufgefallen:
> Wozu?

Ich benötige stabile Transferraten, der Server muss eine Volltextsuche
auf einem großen Index durchführen. Da bei Plattenzugriffen nur
theoretische 50 MB/s zur Verfügung stehen - und in der Praxis sinkt die
Transferrate (ohne Cache) auf 10 MB/s ab (was OK ist, war nicht anders
erwartet). Deshalb habe ich mich für die RAM-Disk entschieden. In
Erwartung stabile rund vor allem schneller Schreib- und Lesereaten. Die
Stabilität ist in jedem Fall eingetreten, d.h. es gibt keine IO-Waits
mehr, aber die Transferraten sind enttäuschend.

> > 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

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.

Vielleicht ist auch die Wahl des Dateisystem nicht unerheblich...
Beispielen folgend habe ich mich für ext2 entschieden... gibt es eine
Alternative?

> 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
> 
> [ronny at bserv tmp]$ time dd of=/dev/zero if=test bs=1M count=100
> 100+0 Records ein
> 100+0 Records aus
>  
> real    0m0.131s
> user    0m0.000s
> sys     0m0.130s

Siehe oben.

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.

Ach ja, ganz vergessen warum ich hier Poste:

$ cat /etc/redhat-release
Fedora Core release 2 (Tettnang)


Danke für die Antwort und Grüße,

Alexander

-- 
FOTOFINDER GMBH			GF: Ali Paczensky / USt-IdNr. DE812854514
Software-Entwicklung		Web:	http://www.fotofinder.net/
Potsdamer Str. 96		Tel:	+49 30 59 00 69 77
10785 Berlin			Fax:	+49 30 59 00 69 59






More information about the Fedora-de-list mailing list