Die meisten von mir verwalteten Linux-Systeme verfügen über Hardware-RAID-Controller (hauptsächlich HP Smart Array ). Sie laufen alle mit RHEL oder CentOS.
Ich suche nach realistischen Tunables, um die Leistung für Setups zu optimieren, die Hardware-RAID-Controller mit SAS-Datenträgern (Smart Array, Perc, LSI usw.) und batteriegepuffertem oder flashgepuffertem Cache enthalten. Angenommen, RAID 1 + 0 und mehrere Spindeln (4 + Festplatten).
Ich verbringe viel Zeit damit, Linux-Netzwerkeinstellungen für Anwendungen mit geringer Latenz und für Finanzhandelsanwendungen zu optimieren. Viele dieser Optionen sind jedoch gut dokumentiert (Ändern der Sende- / Empfangspuffer, Ändern der TCP-Fenstereinstellungen usw.). Was machen Ingenieure auf der Speicherseite?
In der Vergangenheit habe ich Änderungen am E / A-Planungsaufzug vorgenommen und mich vor kurzem für den Planer deadline
und entschieden noop
, um die Leistung in meinen Anwendungen zu verbessern. Mit dem Fortschritt der RHEL-Versionen ist mir auch aufgefallen, dass sich auch die kompilierten Standardeinstellungen für SCSI- und CCISS-Blockgeräte geändert haben. Dies hat sich im Laufe der Zeit auf die empfohlenen Einstellungen des Speichersubsystems ausgewirkt. Es ist jedoch eine Weile her, dass ich klare Empfehlungen gesehen habe. Und ich weiß, dass die Standardeinstellungen des Betriebssystems nicht optimal sind. Beispielsweise scheint der Standard-Vorauslesepuffer von 128 KB für eine Bereitstellung auf Hardware der Serverklasse extrem klein zu sein.
In den folgenden Artikeln werden die Auswirkungen auf die Leistung beim Ändern der Werte für Read-Ahead- Cache und nr_requests in den Blockwarteschlangen erläutert .
http://zackreed.me/articles/54-hp-smart-array-p410-controller-tuning
http://www.overclock.net/t/515068/tuning-a-hp-smart-array-p400-with -linux-why-tuning-really-matters
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
Dies sind beispielsweise Änderungsvorschläge für einen HP Smart Array RAID-Controller:
echo "noop" > /sys/block/cciss\!c0d0/queue/scheduler
blockdev --setra 65536 /dev/cciss/c0d0
echo 512 > /sys/block/cciss\!c0d0/queue/nr_requests
echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb
Was kann noch zuverlässig optimiert werden, um die Speicherleistung zu verbessern?
Ich suche speziell nach Sysctl- und Sysfs-Optionen in Produktionsszenarien.