Większość systemów Linux, którymi zarządzam, zawiera sprzętowe kontrolery RAID (głównie HP Smart Array ). Wszystkie działają pod kontrolą RHEL lub CentOS.
Szukam dostrajania w świecie rzeczywistym, aby pomóc zoptymalizować wydajność konfiguracji, które zawierają sprzętowe kontrolery RAID z dyskami SAS (Smart Array, Perc, LSI itp.) Oraz pamięć podręczną z podtrzymaniem bateryjnym lub flash. Załóżmy RAID 1 + 0 i wiele wrzecion (4+ dyski).
Spędzam dużo czasu na dostrajaniu ustawień sieci Linux dla aplikacji o niskim opóźnieniu i handlu finansowego. Ale wiele z tych opcji jest dobrze udokumentowanych (zmiana buforów wysyłania / odbierania, modyfikowanie ustawień okna TCP itp.). Co robią inżynierowie po stronie magazynu?
Historycznie wprowadziłem zmiany w elemencie windującym harmonogramowanie we / wy , ostatnio zdecydowałem się na harmonogramy deadline
i noop
, aby poprawić wydajność w swoich aplikacjach. W miarę rozwoju wersji RHEL zauważyłem również, że zmieniły się również domyślne ustawienia dla urządzeń blokowych SCSI i CCISS. Z czasem wpłynęło to na zalecane ustawienia podsystemu pamięci. Minęło trochę czasu, odkąd widziałem jakieś wyraźne rekomendacje. I wiem, że domyślne ustawienia systemu operacyjnego nie są optymalne. Na przykład wydaje się, że domyślny bufor odczytu z wyprzedzeniem 128 kb jest bardzo mały dla wdrożenia na sprzęcie klasy serwerowej.
W poniższych artykułach opisano wpływ na wydajność zmiany pamięci podręcznej z wyprzedzeniem i wartości nr_requests na kolejki bloków.
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-dlaczego-tuning-naprawdę-ważne
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
Na przykład są to sugerowane zmiany dla kontrolera RAID HP Smart Array:
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
Co jeszcze można niezawodnie dostroić, aby poprawić wydajność pamięci?
Szczególnie szukam opcji sysctl i sysfs w scenariuszach produkcyjnych.