raid bei kleineren datenmengen langsamer?

M

mymomo

Gast
aufgrund einer vermutung, das bei einem rechner eventuell die platte defekt ist, habe ich mal ein analysetool drüberlaufen lassen... ebenso ein paar benchmarks...
um die benchmarks richtig deuten zu können, habe ich mal meinen rechner zum vergleich laufen lassen und hab mich doch ein wenig gewundert...

mein rechner:
intel p45 chipsatz
2x Samsung HD103SJ (also 2x 1TB)
als raid-0

anderer rechner:
amd sb750 chipsatz
Western Digital WD5000AADS 500 GB (Caviar Green)

bei den test kam heraus, das alles was kleinere datenmengen sind, der untere rechner schneller ist... nicht viel, aber ich dachte bislang immer, dass das raid generell schneller sein dürfte...
erst bei größeren datenmengen kam der untere rechner irgendwann an seine grenzen und mein rechner war da dann etwas mehr als doppelt so schnell wie der andere...

woran liegts?
 
Bei kleinen Dateien, die auf ein Stripe passen, wird nur eine Platte aktiviert - was in der Access-Zeit nur 1/2 der Umdrehungszeit enthält.
Größere Dateien, welche in zwei oder mehr Stripes passen, arbeiten auf beiden Platten, womit der Access um 1/6 der Umdrehungszeit auf 2/3 ansteigt. Das macht bei einer 7200RPM Platte +1,39ms aus - bei einer angenommenen Oberflächengeschwindigkeit von z.B. 80MB/s wird das erst bei Dateien, die größer als 222KB sind, durch die doppelte Übertragungsgeschwindigkeit kompensiert, und danach gewinnt der RAID0... :)
(alles natürlich nur unter der Annahme, dass die Einzelplatte gleiche Kenndaten wie die im RAID0 verwendeten hat)
 
noch fragen?.. mmhhh^^... jain!

zugriffzeiten - kann ich verstehen... auch die sache mit den "stripes"... ist zwar jetzt gerade in wenig neuland, aber sinn macht das...
diese sollen jedoch laut angabe beider hersteller identisch sein...

zudem ist die samsung f3 reihe ja eigentlich bekannt für ihre gute performance... während die wd green cavier´s ja eher dafür bekannt sind gute datensicherungsplatten zu sein, da diese leise und stromsparend sein sollen... und eben halt nicht so flott wie ihre blauen oder schwarzen bruderplatten^^...

wenn ich nun also ernst@at seinen beitrag richtig deute, arbeitet bei kleinen datenmengen nur eine der raid0-platten... doch dürfte da nicht auch meine samsung fixer sein als die wd des anderen rechners?

wie ich schon sagte, bei großen datenmengen waren die werte jedoch zufriedenstellend... während die einzelne wd etwa 100mb/s hatte, hatte mein raid an die 220mb/s geschafft...
 
naja du beantwortest dir das sowieso selbst. bei vielen kleinen dateien ist ein raid langsamer als eine einzelne platte.

Beispiel:
eine ssd ist gefühlt deutlich schneller als mein raid 5, obwohl das bis zu 500MB/s schaufeln kann, aber halt nur bei großen dateien. ansonsten ist der zugriff relevant...
 
es kommt nicht auf die Datenmenge an, sondern auf die Größe der einzelnen Dateien, und ob diese fragmentiert sind oder nicht (und auch noch auf die Qualität des Kopierprogramms), ob die Dateien außen oder innen auf den Platten liegen,...
 
Übrigens: Da eine Windowsinstallation hauptsächlich aus kleinen Dateien besteht, ist daher ein (R)AID-0 oftmals nicht die "bis zu 100%" schneller sondern real eben etwa 5-10%, wenn überhaupt. Dagegen steht dann eine um 100% erhöhte Ausfallwahrscheinlichkeit, um 100% erhöhter Stromverbrauch, um 100% erhöhter Platzverbrauch, um 100% erhöhte Lautstärke... ;)
 
"Übrigens: Da eine Windowsinstallation hauptsächlich aus kleinen Dateien besteht, ist daher ein (R)AID-0 oftmals nicht die "bis zu 100%" schneller sondern real eben etwa 5-10%, wenn überhaupt."
ist leider nicht richtig.
Bei zumeist kleinen Dateien spielt jeder stripe-RAID (0,5,...) sein As aus dem anderen Ärmel aus: doppelte I/O-Rate. Da die kleinen Dateien in einem Stripe auf je einer Platte liegen, kann die doppelte Anzahl an I/Os für parallel ablaufende Threads abgesetzt werden. Deswegen merkt man das (wenn man sonst alles richtig gemacht hat) vom Systemstart bis in das Antwortverhalten von Applikationen, wenn nebenher Hintergrundtasks arbeiten...
 
...wie oft kommt es denn in einem HeimPC vor, dass Daten parallel abgerufen werden? Wenn man sich anschaut, wie langsam SSDs immer noch real sind (im Vergleich zu HDDs, denn in Benchmarks sind sie um weit mehr schneller) kommen solche gleichzeitigen Zugriffe weitaus seltener vor als man glaubt. Eigentlich sollte ein PC mit SSD ja nur so flutschen, braucht aber dennoch teils mehrere Sekunden bei Programmstarts oder Installationen. Zwar laufen diese weit schneller ab als bei HDDs, aber eben nicht 10fach schneller.

Genauso ist's eben auch bei (R)AID-0: Theoretisch ja ganz nett, aber praktisch sind Programme von Anfang an darauf ausgelegt zuerst Datei1 und danach Datei2 anzufragen und nicht gleich alles zugleich zu laden und danach zu schauen, was schneller im RAM gelandet ist.
 
Wie groß sollte ein Stripe also Idealerweise sein für Windows Ernst@at?

Nebenbei, wie kommt man auf 1/6 Plattenumdrehung? Wieso ist das nicht eine weitere halbe Umdrehung?
 
erstmal sollte man auf richtiges Partition-Alignment achten
Wenn einem der daraus resultierende Verlust nichts ausmacht, ist eine Erhöhung der Clustersize sinnvoll, was die Zahl der I/Os reduziert
Eine allgemeingültige beste Stripesize gibt es nicht, das kommt auf den Individualfall an - warum, hab ich hier mal belabert

zum 1/6: das kommt zur Wartezeit auf 1/2 Umdrehung bei einer Platte dazu, ergibt insgesamt 2/3 der Dauer einer Umdrehung.

Will man einen bestimmten Plattensektor auf der Platte lesen, befindet sich der im Moment, wenn der Zugriffsarm sich auf die Spur eingependelt hat, irgendwo auf seinem kreisförmigen Umlauf. Im statistischen Mittel muß man eben eine halbe Umdrehung warten, bis der am Lese/Schreibkopf vorbeigekommen ist.
Setzt man in einem Stripeset zwei I/Os auf zwei Platten gleichzeitig ab, dann wird wegen der nicht synchron laufenden Oberflächen im statistischen Mittel 2/3 einer Umdrehung verstreichen, bis auch der ungünstiger gelegene Sektor einer der Platten gelesen/geschrieben werden kann; bei 6 RAID5-Platten arbeitet man auf 5 Stripes eines Sets, und muß 5/6 einer Umdrehung warten.

@sukrim:
...wie oft kommt es denn in einem HeimPC vor, dass Daten parallel abgerufen werden?
Seit auf den meisten Heim-PCs statt DOS Windows läuft. Ist ja ein Multitasking-System
Eigentlich sollte ein PC mit SSD ja nur so flutschen, braucht aber dennoch teils mehrere Sekunden bei Programmstarts oder Installationen.
wenn er jetzt statt I/O-bound nicht CPU-bound wäre. Schon mal im Task Manager die CPU-Belastung angesehen? Wenn er die Programme nicht durchzuführen hätte, bräuchte er sie ja nicht vorher laden :)
 
Beim Laden von PS CS4 komme ich in den 3-4 Sek. die das dauert nicht über 80% CPU Last auf beiden Kernen bei einem 2 GHz Dualcore Mobilprozessor.

Bei vielen Programmen ist's wohl schwer da überhaupt einen ordentlichen Messpunkt zu kriegen, da sie weit schneller als die eine Sekunde laden, die der Taskmanager als "tick"Zeit hat, daher hat man eben einen recht zufälligen Spike von 40-60%.

Ich glaube noch immer nicht, dass z.B. PS CS4 CPU limitiert ist sondern vermutlich eher von der sequenziellen Programmierung/Fileaccess gebremst wird (ja, das wirkt sich dann auch auf CPU aus, wenn die schneller arbeiten würde, würd's wieder schneller gehen - allerdings wäre es bei Multicores noch schneller, wenn alle Cores arbeiten könnten)
 
Zurück
Oben