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 deadlinee noopper 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.