Eigenarten bei Cacheverwaltung des Dell Perc 5/i und SSDs

freeman303

Enthusiast
Thread Starter
Mitglied seit
01.08.2006
Beiträge
631
Ort
Schwarzwald/Bodensee (z.Zt. auf bestimmte Zeit bei
Mir sind einige Eigenarten im Zusammenhang zwischen Read- und Write-Cache Einstellungen und Benchmarkergebnissen aufgefallen.

Mein Testsystem besteht aus einem RAID 0 aus 2 x Mtorn Mobi 3000 32 GB SSD an einem Dell Perc 5/i Controller mit 256 MB RAM-Cache, neueste Dell Firmware und neueste LSI Treiber. Stripegröße waren nur 8 kB. Beim Einsatz von größeren Stripegrößen waren die Ergebnisse aber entsprechend gleich „verwirrend“. Als Betriebssystem kam Windows Server 2008 x64, was Vista x64 entspricht.

Ich veröffentliche hier Werte die mit ATTO und CrystalDiskMark ermittelt wurden. Die Tendenz der Ergebnisse wurde jedoch auch von anderen Benkchmarkprogrammen bestätigt.

Die Ausgangssituation war ein Zustand, in dem No Read Ahead und Write Thorough verwendet wird Also entspricht diese Einstellung Lesecache = aus und Schreibcache = aus.

ATTO Liefert hier [Blockgröße, Write in MB/s, Read in MB/s]:
4k – 69 – 73
8k – 110 – 113
16k – 113 - 120
32k – 117 - 128
64k – 120 - 133
128k – 122 - 139
256k – 127 - 146
512k – 131 – 153

CrystalDiskMark (Blockgröße: 1000 MB) [Test, Read in MB/s, Write in MB/s]:
Seq – 146 – 124
512k – 140 – 49
4k – 25 – 1.5

Da mir die Schreibleistung zu gering war, fragte ich mich, was passiert, wenn ich den Schreibcache auf Write Back einstelle. Der Lesecache soll unberührt auf aus bleiben. So ist die neue Einstellung: Write Cache = Write Back
Read Cache = No Read Ahead

Was ich erwartet hätte wäre eine Zunahme der Schreibleistung und eine unveränderte Leseleistung. Entgegen der Erwartung habe ich die folgenden Ergebnisse erhalten:

ATTO Liefert hier [Blockgröße, Write in MB/s, Read in MB/s]:
4k – 37 - 66
8k – 59 - 98
16k – 66 - 71
32k – 91 - 87
64k – 99 -104
128k – 89 - 196
256k – 76 - 138
512k – 89 - 108

CrystalDiskMark (Blockgröße: 1000 MB) [Test, Read in MB/s, Write in MB/s]:
Seq – 84 - 67
512k – 115 - 85
4k – 20 – 19.5

Folgendes ist passiert:
Bei ATTO sinkt die Schreibleistung auf 50% bis 70% im Vergleich, wenn man als Cachestrategie WT verwendet.
Bei ATTO sinkt die Leseleistung von 73 auf 66 bei 4k und von 153 auf 108 bei 512k. Den Ausreißer bei 128k kann ich nicht erklären. Doch warum verändert sich die Leseleitung, obwohl nur die SCHREIB-Cache-Strategie geändert wurde?
CrystalDiskMark bestätigt tendenziell die Ergebnisse von ATTO. Lediglich erhöhen sich hier die Scheibwerte bei 512k und 4k deutlich!

So verändert die Änderung der Schreibcachestrategie auch die Leseleistung. Finde ich zwar verwirend, aber was soll’s.

Möglicherweise verändern sich die Schreibwerte auch, wenn nur die Lesecachestrategie geändert wird? Also teste ich hier das Array mit den Einstellungen:

Write Cache = Write Thorough
Read Cache = Always Read Ahead und Adaptive Read Ahead (bei beiden Lesecachestrategien sind die Ergebnisse vergleichbar miteinander)

ATTO Liefert hier [Blockgröße, Write in MB/s, Read in MB/s]:
4k – 37 - 45
8k – 52 - 88
16k – 66 - 119
32k – 80 - 148
64k – 92 - 169
128k – 97 - 192
256k – 102 - 206
512k – 103 - 169

CrystalDiskMark (Blockgröße: 1000 MB) [Test, Read in MB/s, Write in MB/s]:
Seq – 95 - 58
512k – 113 - 49
4k – 21 – 1.4

Auch hier sacken die Schreibwerte bei ATTO auf 50% bis 70% der ursprünglichen Schreibleistung ein. Die Leseleistung steigt hier erst ab einer Dateigröße von 32k auf bis zu 20% max. mehr.
CrystalDiskMark ist nicht der gleichen Meinung. Hier sinken die Lesewerte durch die Bank. Der Schreibwert im Seq-Bereich ebenfalls.

Der Vollständigkeithalber auch die Werte bei:
Write Cache = Write Back
Read Cache = Always / Adaptive Read Ahead (auch hier haben beide Read-Cache Mechanismen keine nennenswerten Vorteile oder Nachteile zueinander)

ATTO Liefert hier [Blockgröße, Write in MB/s, Read in MB/s]:
4k – 36 - 31
8k – 75 - 91
16k – 60 - 67
32k – 90 - 95
64k – 96 - 96
128k – 90 - 192
256k – 74 - 118
512k – 89 - 105

CrystalDiskMark (Blockgröße: 1000 MB) [Test, Read in MB/s, Write in MB/s]:
Seq – 84 - 67
512k – 105 - 87
4k – 18 - 17

Im Vergleich zum Test mit Write Back und No Read Ahead bleibt hier die Schreibleistung unverändert. Die Leseleistung sinkt im gesamten sogar etwas.
CrystalDiskMark bestätigt das leichte Absinken der Leseleistung.

Mein Fazit des gesamten Tests:
Aktiviert man die Schreibcachestrategie von WT auf WB, in der Hoffnung eine höhere Schreibleistung zu erhalten, gibt es als Ergebnis Einbrüche dieser auf bis zu max. 50% der ursprünglichen Schreibleistung mit CacheStrategie WT.

Das Aktivieren des Lesecache resultiert in deutlicher Verringerung der Schreibleistung und ebenfalls der Leseleistung. Nur die Leseleistung bei Dateien ab einer bestimmten Größe wird leicht positiv beeiflusst.

Ergo: Vielleicht sollte man die Caches deaktiviert lassen. Also Write Cache = WT, Read Cache = No Read Ahead. So erhält man die insgesamt höchste Schreib- und Leseleistung. Traurig aber wahr.

Die Werte habe ich an einem weiteren System mit 2 SSDs und einem Perc 5i bestätigt.

Was sind Eure Meinungen dazu?

Gruss
Freeman
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Stripegröße waren nur 8 kB

schonmal mit mehr probiert? bei mir mit 32k siehts anders aus ;) wobei ich auch festgestellt hatte, dass read ahead eher schädlich ist. hier mal meine CDMs bei 32k stripe und WB. Das ganze mit 3x 3525-16@R0. ne einzelne schafft 100/100 MB/s. mit dabei: die langsamere Dell-FW. mit der LSI könnte noch mehr gehen

unbenannt8vyr.jpg
 
Zuletzt bearbeitet:
Wo wir gerade bei den mobis sind .. der Bänschmark ist doch bestimmt von einem frischen Array oder?

Kannst du nochmal deine settings schreiben? Will mal einen Abgleich mit meinem RAID0 (2x3000er 16GB mobis) machen

Achja, wenn du gerade Lust hast .. den AS Bänschmark hier aus dem Forum mal durch zuziehen ... wäre net schlecht ;)
Dein Array sollte Mittlerweile sich doch auch etwas "abgearbeitet" haben...
 
Genau,Stripe Size mal höher eistellen.
Was du aber scheinbar bei deinem Vergleich nicht beachtest ist,das du mit Write Back Cache wesentlich höhere Random Write Werte erreichst als ohne.
Die Seq. Raten sind nicht so wichtig,die könntest du aber bestimmt mit einer höheren Stripe 64 oder 128K steigern.
 
@Schlingel:

Wie kommst Du dazu, dass mit der LSI mehr gehen könnte? Über wie viel mehr reden wir da?

@Schlingel & BlackGhost:

Was ist so toll an RAID 0 mit 3 Datenträgern?

@Alle:
Es ist immer noch unerklärt geblieben, warum die Änderung der Schreibcachestrategie die Leseleistung beeinflußt?

Gruss
Freeman
 
Also als erstes mal hast du da wohl ein paar Einstellungen mißverstanden. den Lesecache des Controllers kann man (meines Wissens nach) garnicht ausschalten, der Controller cached immer, egal ob da Read Ahead steht oder nicht. Das beeinflußt nämlich nur, WIE bzw. welche Daten in den Cache wandern.

Aktiviert man die Schreibcachestrategie von WT auf WB, in der Hoffnung eine höhere Schreibleistung zu erhalten, gibt es als Ergebnis Einbrüche dieser auf bis zu max. 50% der ursprünglichen Schreibleistung mit CacheStrategie WT.
So etwas ähnliches hatte ich vor einer Weile mit meinen HDDs im Server auch schon festgestellt. Das hat aber eigentlich einen ziemlich einfachen Grund gehabt. Meine 8 Platten hatten zusammen einen 256MB großen Cache, der die Daten mit über 600 MB/s angenommen hat, während der Cache des Perc selber nur knapp unter 400 MB/s geschafft hat. Der Weg der Daten direkt in den Festplatten-Cache ist schneller als der Umweg/Zwischenschritt über den Controller-Cache. ATTO ist für den Test eigentlich auch ziemlich ungeeignet, weil die getestete Datenmenge einfach viel zu klein ist.

Das Aktivieren des Lesecache resultiert in deutlicher Verringerung der Schreibleistung und ebenfalls der Leseleistung. Nur die Leseleistung bei Dateien ab einer bestimmten Größe wird leicht positiv beeiflusst.
Wie schon gesagt, der Lesecache ist immer aktiv, du kannst ihn also garnicht extra "aktivieren", du beeinflusst damit nur seine Lesestrategie. Ein Beispiel: dein Bench möchte Block 1-2-3-4 lesen, und dann Block 5-6-7-8 schreiben. Ohne Read Ahead liest der Controller Block 1-4 ein, und übergibt sie an den Bench, anschließend nimmt er Block 5-8 an und schreibt sie sofort weg. Mit (adaptive) Read Ahead liest der Controller zusätzlich zu Block 1-4 auch gleich noch Block 5 und 6 ein, weil die evtl. nach 1-4 ebenfalls gebraucht werden könnten, währenddessen wartet der Bench aber schon dadrauf, endlich Block 5-8 schreiben zu können. Dadurch, daß der Controller also noch mit dem Lesen (in dem Fall) unnötiger Daten beschäftigt ist, wird das Schreiben weiterer Daten ausgebremst. Bei kleinen Dateien sieht das ähnlich aus, es werden 1-2-3-4 und danach 24-25-26 angefordert, und der Controller liest 1-2-3-4-5 und dann erst 24-25-26-27. Bei großen Dateien kann das aber wiederum einen kleinen Vorteil bringen, das hast du ja auch schon nachgewiesen ;)

Ergo: Vielleicht sollte man die Caches deaktiviert lassen. Also Write Cache = WT, Read Cache = No Read Ahead. So erhält man die insgesamt höchste Schreib- und Leseleistung. Traurig aber wahr.
Also Read Ahead macht nur in bestimmten Fällen Sinn (wenn viele große Dateien gelesen werden sollen), und beim Schreibcache kommt es auch stark dadrauf an, worauf man aus ist. Geht es dir nur um hohe sequenzielle Schreibwerte, dann solltest du den Cache ausschalten, da er sonst die Schreibvorgänge zusätzlich etwas verzögert. Aber gerade beim Random-Schreiben vieler kleiner Dateien (siehe deine Crystal-Werte) bringt der Cache enorm was.

Außerdem ist der Perc viel zu schade für so ein schnödes Raid0, da würde wohl auch schon ein Onboard-Controller ausreichen. Richte dir mal ein Raid5 ein, da willste dann auf den Schreibcache nicht mehr verzichten ;)

@Alle:
Es ist immer noch unerklärt geblieben, warum die Änderung der Schreibcachestrategie die Leseleistung beeinflußt?
Wer weiß, wie der Perc seinen Cache verwaltet? Bei deaktiviertem Schreibcache stehen dem Lesecach ja die kompletten 256MB zur Verfügung, das heißt, daß z.b. ATTO schonmal komplett im Cache des Controllers ablaufen kann. Wenn jetzt der Schreibcache aktiviert wird, wird der Cache-Speicher des Controllers möglicherweise halbiert, es stehen so dann z.b. nur noch 128MB als Lesecache zur Verfügung.

Edit: ich hab das jetzt mal kurz bei mir mit ATTO getestet, und ich kann deine Ergebnisse nicht so recht bestätigen:



Wenn ich den Schreibcache deaktiviere, brechen die Schreibraten etwas, und die Leseraten massiv ein. Das mit den leseraten lässt sich leicht erklären: mit aktivem Schreibcache wandern die Daten beim Schreiben ja in den Cache, beim anschließenden Lesen müssen sie dann nicht mehr von der SSD gelesen werden, sondern kommen direkt vom Cache wieder zürück (700MB/s würden 2 UDs auch niemals schaffen).

Mein Perc hat übrigens 512MB Cache ;)
 
Zuletzt bearbeitet:
ich würde jetzt mal scheu folgende Vermutung äussern:

Wenn Write Cache aktiviert ist, muss der Controller vor dem lesen kontrollieren, ob für den zu lesenden Bereich Daten im (Write) Cache sind. Dadurch verliert er Zeit,... was die sequentielle Übertragungsrate limitiert?
 
warum 3x16GB @Raid0?

A: knapp 300MB/s anstatt nur 100MB/s. sprich ich kann beim kopieren vom SSD-Array das R5 der HDDs auch mal wirklich auslasten bzw auch andersrum. Dazu SLC und Es war günstiger als 2x 32GB und auch als 1x 64GB. Und da der Platz reicht ->Warum nedd?

Die LSI ist teils deutlich schneller. Wies mit SSDs aussieht ist aber wieder ne andere Sache

Ich kann jedenfalls defintiv sagen, das es bei dir wohl an der deutlich zu kleinen Stripe liegt. Hatte deshalb damals einige Tests gemacht. 128k war grottig genau wie 16k und kleiner. 32k war nen ticken schneller als 64k weshalb ich mich dann dafür entschieden hab - und: nen OS wird auch bei 32k besser laufen als mit 64k
 
Ich hatte vor einigen Monaten schon mal einige HD-Tune Graphen gepostet im Perc - Thread dazu. Dabei sind mir einige Merkwürdigkeiten und sogar eine Limitierung aufgefallen mit meiner UD64.
Ebenso ist mir aufgefallen das die IOPS je nachdem wie ich den Controller einstelle, teils 10-20% oder mehr einbrechen, wohl dem umstand mit der Cache-Verwaltung zu verdanken.
Was ich allerdings sehr beeindrucked fand war, wenn der Schreibcache eingeschaltet ist, wie hoch dann auch die Schreibraten sind (mit dem Cache dann).
 
Hallo!

Habe soeben die neueste LSI Firmware auf den Perc geladen. Tatsächlich ist die Performance bei SSDs deutlich besser. Auch das Verhalten bei den Cache-Strategien hat sich verbessert.

Schaltet man WB ein, ist auch eine deutliche verbesserung der Schreibraten im Vergleich zu WT messbar. Auch die Leseraten fallen unter Verwendung von WB nicht ein, so wie ich es oben geschildert habe.

Daher denke ich, dass die Dell Firmware einfach ein riesen Murks ist, was die Cache-Strategien anbelangt. Typisch Dell eben!

Wie schaut es mit dem Data-Corruption-Bug aus, wenn die LSI Firmware auf dem Perc eingesetzt wird? Gibt es diesbezüglich Neues oder hat sich nichts getan und das Verhalten ist weiterhin bei diesem Szenario ungeklärt?

Gruss
Freeman
 
Moin, moin

ich setzte die LSI Firmware seit knapp 2 Monaten ein und habe bisher nicht Negatives bemerkt bezüglich des Data-Corruption-Bugs.

Bis denne ...
 
Ergo: Vielleicht sollte man die Caches deaktiviert lassen. Also Write Cache = WT, Read Cache = No Read Ahead. So erhält man die insgesamt höchste Schreib- und Leseleistung. Traurig aber wahr.

imho heisst "Read Cache = No Read Ahead" NICHT dass du keinen lesecache hast!
das heisst schlicht und einfach dass er keinen read ahead macht, aber schon gelesene (oder gerade geschriebene?) daten noch im lesecache haelt.
wenn du den schreibcache aktivierst hast du natuerlich weniger cache als lesecache zur verfuegung und deshalb brechen die leseraten ein.
 
ich hab wie Toppas das selbe problem mit meiner Ultradrive 64 am Perc, bei aktiviertem Cache brechen alle werte ein, die IOPS fallen in den Keller. Selbst wenn ich alles auschalte, und der Perc quasi passiv arbeitet hab ich 3000IOPS weniger als am Onboardcontroller. Ich habe auch die DELL-FW drauf, da nebendran noch ein Raid5 mit 7x1TB arbeitet und ich angst vor dem Datenkorruptionsbug der LSI-FW habe.
Würd mich freun wen bald mal ne flotte Dell-FW oder ne LSI ohne den vermeindlichen Bug geben würde...
 
... angst vor dem Datenkorruptionsbug der LSI-FW habe.
Würd mich freun wen bald mal ne flotte Dell-FW oder ne LSI ohne den vermeindlichen Bug geben würde...

Achtung Jungs Nichts falsches sagen.

Das ganze ist kein BUG sondern resultiert daraus, dass bei flashen der LSi FW auf dem Dell Controller der DELL Bootloader erhalten bleibt!

Wir, ich inkl., verwenden eine LSI FW für ein DELL Produkt, da wirds keine korrigierte FW geben, denn DELL sagt verwende unsere FW die für den Controller geschrieben wurde und nachweislich geht.
LSi sagt, Du darfst die LSI FW nicht verwenden, da es sich um ein für Dell gefertigtes Produkt handelt.

Womit BEIDE recht haben.

Dass das geht ist was anderes!

EDIT stimme Dir aber zu, ne Flotte DELL FW wär super, nur glaub ich daran auch nicht, leider.
 
Zuletzt bearbeitet:
Jetzt musste ich doch glatt nochmal die SSD an den Perc hängen und mit Write Thorough und No Read Ahead durchtesten.

Onbord:


Perc 5i:


Hatte die ganze Zeit mit Write Back gebencht weil ich mir dachte das MUSS doch besser sein ^^.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh