A maioria dos sistemas Linux que eu gerencio possui controladores RAID de hardware (principalmente o HP Smart Array ). Todos eles estão executando o RHEL ou o CentOS.
Estou procurando por ajustes do mundo real para ajudar a otimizar o desempenho de configurações que incorporam controladores RAID de hardware com discos SAS (Smart Array, Perc, LSI etc.) e cache com bateria ou com flash. Suponha RAID 1 + 0 e vários eixos (4 ou mais discos).
Eu gasto bastante tempo ajustando as configurações de rede Linux para aplicativos de negociação financeira e de baixa latência. Mas muitas dessas opções estão bem documentadas (alterando os buffers de envio / recebimento, modificando as configurações da janela TCP, etc.). O que os engenheiros estão fazendo no lado do armazenamento?
Historicamente, fiz alterações no elevador de agendamento de E / S , optando recentemente pelos agendadores deadline
e noop
para melhorar o desempenho em meus aplicativos. À medida que as versões RHEL progrediram, também observei que os padrões compilados dos dispositivos de bloco SCSI e CCISS também foram alterados. Isso teve um impacto nas configurações recomendadas do subsistema de armazenamento ao longo do tempo. No entanto, já faz um tempo desde que eu vi recomendações claras. E eu sei que os padrões do SO não são ideais. Por exemplo, parece que o buffer de leitura antecipada padrão de 128kb é extremamente pequeno para uma implantação em hardware de classe de servidor.
Os artigos a seguir exploram o impacto no desempenho da alteração dos valores de cache de leitura antecipada e nr_requests nas filas de blocos.
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-important
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
Por exemplo, são sugeridas alterações para um controlador HP Smart Array RAID:
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
O que mais pode ser ajustado com confiabilidade para melhorar o desempenho do armazenamento?
Estou procurando especificamente pelas opções sysctl e sysfs nos cenários de produção.