Ich habe ein RAID 10-Setup mit 8 Laufwerken an einen Adaptec 5805Z angeschlossen, auf dem Centos 5.5 und der Terminplaner ausgeführt werden.
Ein grundlegender dd
Lesetest zeigt 400 MBit / s und ein grundlegender Schreibtest dd
zeigt ungefähr dasselbe.
Wenn ich die beiden gleichzeitig ausführe, sinkt die Lesegeschwindigkeit auf ~ 5 MB / s, während die Schreibgeschwindigkeit mehr oder weniger bei 400 MB / s bleibt. Die Ausgabe von iostat -x
wie erwartet zeigt, dass nur sehr wenige Lesetransaktionen ausgeführt werden, während die Festplatte mit Schreibvorgängen bombardiert wird.
Wenn ich den Writeback-Cache des Controllers ausschalte, sehe ich keine 50: 50-Aufteilung, aber ich sehe eine deutliche Verbesserung, irgendwo bei 100 MB / s Lesevorgängen und 300 MB / s Schreibvorgängen. Ich habe auch festgestellt, dass ich beim Lesen der Einstellung nr_requests in der Warteschlange des Laufwerks (etwa 8 scheint optimal zu sein) Lesevorgänge mit 150 MBit / s und Schreibvorgänge mit 150 MBit / s erzielen kann. dh. Eine Reduzierung des Gesamtdurchsatzes, aber sicherlich besser für meine Arbeitsbelastung geeignet.
Ist das ein echtes Phänomen? Oder ist mein synthetischer Test zu einfach?
Der Grund, warum dies passieren könnte, scheint klar genug zu sein: Wenn der Scheduler von Lesevorgängen zu Schreibvorgängen wechselt, kann er jede Menge Schreibanforderungen ausführen, da alle nur im Cache des Controllers landen, aber irgendwann ausgeführt werden müssen. Ich würde vermuten, dass die tatsächlichen Festplattenschreibvorgänge auftreten, wenn der Scheduler erneut versucht, Lesevorgänge auszuführen, was dazu führt, dass nur sehr wenige Leseanforderungen ausgeführt werden.
Dies scheint eine vernünftige Erklärung zu sein, aber es scheint auch ein massiver Nachteil bei der Verwendung des Rückschreibcaches auf einem System mit nicht trivialen Schreiblasten zu sein. Ich habe den ganzen Nachmittag nach Diskussionen gesucht und nichts gefunden. Was vermisse ich?