La maggior parte dei sistemi Linux che gestisco dispongono di controller RAID hardware (principalmente HP Smart Array ). Stanno tutti eseguendo RHEL o CentOS.
Sto cercando sintonizzatori del mondo reale per aiutare a ottimizzare le prestazioni per le configurazioni che incorporano controller RAID hardware con dischi SAS (Smart Array, Perc, LSI, ecc.) E cache supportata da batteria o flash. Supponiamo RAID 1 + 0 e più mandrini (4+ dischi).
Trascorro molto tempo a sintonizzare le impostazioni di rete di Linux per applicazioni di trading a bassa latenza e finanziarie. Ma molte di queste opzioni sono ben documentate (modifica dei buffer di invio / ricezione, modifica delle impostazioni della finestra TCP, ecc.). Cosa stanno facendo gli ingegneri dal punto di vista dello stoccaggio?
Storicamente, ho apportato modifiche all'elevatore della pianificazione degli I / O , recentemente ho optato per gli scheduler deadline
e noop
per migliorare le prestazioni all'interno delle mie applicazioni. Con il progredire delle versioni RHEL, ho anche notato che anche le impostazioni predefinite compilate per i dispositivi a blocchi SCSI e CCISS sono cambiate. Ciò ha avuto un impatto nel tempo sulle impostazioni del sottosistema di archiviazione consigliate. Tuttavia, è da un po 'che non vedo consigli chiari. E so che le impostazioni predefinite del sistema operativo non sono ottimali. Ad esempio, sembra che il buffer read-ahead predefinito di 128kb sia estremamente piccolo per una distribuzione su hardware di classe server.
I seguenti articoli esplorano l'impatto delle prestazioni della modifica dei valori della cache read-ahead e dei valori nr_requests sulle code dei blocchi.
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-davvero-importa
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
Ad esempio, queste sono le modifiche suggerite per un controller 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
Cos'altro può essere ottimizzato in modo affidabile per migliorare le prestazioni di archiviazione?
Sto specificatamente cercando le opzioni sysctl e sysfs negli scenari di produzione.