"General Purpose Raid" an Intel P67: Optimale Größe der Stripes und Zuordnungseinheiten unter NTFS?

Xanathar

Lieutnant
Mitglied seit
18.01.2008
Beiträge
66
Renomée
4
Hallo :)

Vor einigen Jahren habe ich, damals an einer AMD Southbridge, einen Raid-Verbund mit einer Stripegröße von 64kB angelegt und bin mir sehr sicher damals die für mein Anwendungsprofil am besten geeignete Größe der Stripe-Blocks gefunden zu haben. Da ich den Raid-Verbund bisher immer problemlos portieren konnte, habe ich die Platten bisher lediglich ersetzt bzw. erweitert und mir bis einschließlich zum Sabertooth 990FX (AMD SB950) keine Gedanken mehr um die Größe der Stripes gemacht.

Da der "FX" leider nicht ganz das geworden ist, was ich mir erhofft hatte, habe ich mich für einen Core i7 und ein P67 Board entschieden und bin damit nicht nur zu einer anderen Plattform sondern auch zu einem anderen (und inkompatiblen) Raid-Controller gewechselt. Da große SSDs, trotz aller preislichen Besserung, noch immer mein Budget sprengen, habe ich mich für Barracudas der 14er Serie entschieden (bitte keine Diskussion zum Thema Plattenhersteller).

Das Menü des Intel Controllers meint jetzt allerdings, dass 128kB die optimale Stripegröße für einen Desktop sei. Von daher frage ich mich, ob sich die Anwendungsprofile der gängigen Software wirklich so stark verändert haben oder ob man hier lediglich einen "sicheren" Standardwert für Systeme mit überwiegend (sehr) großen Dateien vorgibt? Da ich letzteres für wahrscheinlich halte, habe ich mich zwar wieder für 64kB entschieden, bin mir mittlerweile aber unsicher, ob ich vielleicht doch 128kB wählen sollte. Von der "Platzverschwendung" bei 128kB Stripes abgesehen, scheint mir das Argument des geringeren Overhead bezüglich der CPU-Last bei einem aktuellen Quadcore vernachlässigbar. Inwiefern bieten 128kB Stripes also einen Vorteil im Bezug auf die tatsächliche Hardware der Platten bzw. des Interface? Spielt das bei Laufwerken mit 64MB Cache und NCQ überhaupt eine Rolle?

Bei Google habe ich zwar einige detaillierte Analysen für klassische Server und Workstations gefunden, allerdings lässt sich der Workload dieser Systeme wohl kaum auf einen "General Purpose" Desktop übertragen. Grundsätzlich nutze ich alle möglichen Office- und Webapplikationen, Multimediadateien, arbeite mit 2D Grafiksoftware und RAW Dateien und nutze den PC auch für aktuelle Spiele. Somit ist eine recht große Palette an Dateigrößen abgedeckt und ich denke, dass ein möglicher Vorteil von 128kB Stripes im Verhältnis zu den Nachteilen wieder verpuffen würde?

Eine andere Frage, die von meiner bisherigen Recherche überhaupt erst aufgeworfen wurde, bezieht sich auf die Größe der Zuordnungseinheiten im Bezug auf die Größe der Stripes. Ich habe gelesen, dass einige Anwender durch größere Zuordnungseinheiten (angeblich) einen größeren Performancegewinn erzielt haben wollen als durch die Wahl der Stripegröße selbst. Ab wann ist es sinnvoll unter NTFS (sehr) große Zuordnungseinheiten zu wählen? Zur Zeit sind alle meine Partitionen mit 4kB formatiert und ich habe Zweifel daran, dass ein möglicher Vorteil von 8kB oder 16kB Zuordnungseinheiten im Verhältnis zu den Nachteilen bei einem System mit stark variierenden Dateigrößen (siehe oben) steht. Bringen Zuordnungseinheiten, die ein Mindestverhältnis von 1/x Stripegrößen aufweisen, wirlich eine Steigerung der Raid-Performance? In diesem Zusammenhang habe ich übrigens auch den Hinweis gelesen, dass sich die Stripegröße durch die Größe der Zuordnungseinheiten teilen lassen sollte. Mal ganz davon abgesehen, dass es völliger Unfug wäre eine Größe zu wählen, durch die man die Stripes nicht teilen kann, wäre das (zumindest unter Verwendung von Standardtools) auch überhaupt nicht möglich. Ist also vieles davon bloß Gerede oder doch eine gut gemeinte Erklärung?

Wäre super, wenn jemand Infos zum Thema hat!

Vielen Dank :)
 
Zuletzt bearbeitet:
Hi,

also als erstes würde ich mal behaupten:

1. Eine große Stripe-Größe führt nicht zu verschwendetem Platz, wie eine große Cluster-Größe.
2. Die Cluster-Größe sollte auf jeden Fall kleiner oder gleich der Stripe-Größe sein.

Am Ende richten sich die Größen nach dem Anwendungsprofil. Wenn Du viel sequenziell auf große Dateien zugreifst, dann sollten beide Werte möglichst groß sein. Wenn viel zufällig auf kleine Dateien zugegriffen wird, genau umgekehrt. Wenn Du spezielle Anwendungen wie Datenbanken hast, dann richtet sich die optimale Größe auch nach deren Verwaltungseinheiten.

Wenn bei einer Stripe-Größe von 128KB ein KB Daten gelesen werden soll, werden von den Platten auf jeden Fall 128KB gelesen, wovon 124KB im schlimmsten Fall für die Katz sind. Genau das gleiche gilt beim Schreiben.

Wichtiger als die Cluster-Größe an sich, ist in meinen Augen das Alignment (wie bei SSDs). Wenn man ungeschickter Weise erreicht, dass sich einzelne Cluster auf mehrere Stripes verteilen, dann verliert man ziemlich sicher Performance. Auch beachten sollte man den eventuellen Einfluss von 4K-Sektoren.

Wenn Windows, Games und alles andere auf dem Raid landet, dann würde ich vermutlich eine Stripe-Größe von 32 oder 64 KB wählen, und eine Cluster-Größe von 4K (vielleicht noch 8K).
 
Hi

im Prinzip hat BoMbY das sehr gut dargestellt, in deinem Fall wäre also beides sinvoll 64 oder 128.
Wir hatten mal im desktop zu win xp zeiten eine analyse gemacht was sinvoll mit welchem overhad und welcher performance läuft und zwischen 64-256k gab es nur sehr wenig unterschiede.
Anders sioeht es aus wenn die mehrere Platten in das Raid setzen möchtest sobald deren cluster in summe das Raid Stripe erreicht ist ende, aber das weist du ja eh.
Ich hab mein Raid auf ner SB950 platform auf 64k laufen.
lg
 
Zurück
Oben Unten