3Ware Controller langsam

Einige Tests mit Benchmark-Programmen zeigen, dass mein 3Ware-Storage-Adapter unter Linux die erwartete theoretisch maximale Transferrate des aufgesetzten RAID-Verbunds bei weitem nicht erreicht. Liegt vielleicht ein Hardware-Problem vor?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Thorsten Leemhuis

Einige Tests mit Benchmark-Programmen zeigen, dass mein 3Ware-Storage-Adapter unter Linux die erwartete theoretisch maximale Transferrate des aufgesetzten RAID-Verbunds bei weitem nicht erreicht. Liegt vielleicht ein Hardware-Problem vor?

Das ist natürlich nicht auszuschließen, aber gerade bei diesem Adapter erhöht häufig ein wenig händisches Tuning an den Kernel-Einstellungen den Durchsatz deutlich. So soll laut Hersteller etwa eine Änderung des Read-Ahead-Wertes gerade bei Systemen mit einem Linux-Kernel der 2.6-Reihe deutliche Verbesserungen bringen. Welcher Wert tatsächlich die beste Performance liefert, hängt von verschiedenen Faktoren ab; als Ausgangsbasis für Experimente dürfte eine Einstellung von 16 384 im Voraus gelesenen Sektoren eine gute Basis bilden, die der folgende, als root auszuführende Befehl etwa für das Gerät /dev/sda konfiguriert:

blockdev --setra 16384 /dev/sda

Für RAIDs der Level 5 oder 6 empfiehlt die Supportseite für die 3Ware-Adapter die pro Transfer übertragene Datenmenge auf 64 KByte zu begrenzen; im Beispiel erneut für /dev/sda/:

echo 64 > /sys/block/sda/queue/max_sectors_kb

Anschließend muss man die Read-Ahead-Einstellung jedoch erneut vornehmen. Speziell die Schreibgeschwindigkeit soll eine Einstellung von maximal 512 Befehlen im Puffer steigern:

echo 512 > /sys/block/sda/queue/nr_requests

Ferner empfiehlt der Hersteller bei sequenziellen Datentransfers den Deadline-IO-Scheduler:

echo deadline > /sys/block/sda/queue/scheduler

Im Desktop-Betrieb und vielen anderen Einsatzgebieten hat sich jedoch der bei vielen Distributionen in der Standardeinstellung aktive CFQ-Scheduler als beste Wahl bewährt.

Die Einstellungen haben alle nur Auswirkungen auf das derzeit laufende System. Will man sie dauerhaft setzen, kann man die nötigen Befehle in das am Ende des Bootvorgangs ausgeführte Script /etc/rc.local eintragen. (thl)