La plupart des systèmes Linux que je gère sont dotés de contrôleurs RAID matériels (la plupart du temps HP Smart Array ). Ils fonctionnent tous sous RHEL ou CentOS.
Je suis à la recherche de paramètres concrets pour optimiser les performances des configurations qui intègrent des contrôleurs RAID matériels avec des disques SAS (Smart Array, Perc, LSI, etc.) et un cache sauvegardé par batterie ou flash. Supposons un RAID 1+0 et des broches multiples (4+ disques).
Je passe un temps considérable à régler les paramètres du réseau Linux pour les applications de trading financier et à faible latence. Mais beaucoup de ces options sont bien documentées (changement des tampons d'envoi/réception, modification des paramètres de la fenêtre TCP, etc.) Que font les ingénieurs du côté du stockage ?
Historiquement, j'ai apporté des modifications à l'article Ascenseur d'ordonnancement des E/S , qui a récemment opté pour la deadline
y noop
pour améliorer les performances de mes applications. Au fil des versions de RHEL, j'ai également remarqué que les valeurs par défaut compilées pour les périphériques de bloc SCSI et CCISS ont également changé. Cela a eu un impact sur les paramètres recommandés pour le sous-système de stockage au fil du temps. Cependant, cela fait longtemps que je n'ai pas vu de recommandations claires. Et je sais que les paramètres par défaut du système d'exploitation ne sont pas optimaux. Par exemple, il semble que le tampon de lecture par défaut de 128 kb soit extrêmement petit pour un déploiement sur du matériel de classe serveur.
Les articles suivants examinent l'impact sur les performances d'un changement de lecture anticipée cache et nr_requêtes sur les files d'attente de blocs.
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
Par exemple, voici les modifications suggérées pour un contrôleur 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
Quels sont les autres éléments qui peuvent être réglés de manière fiable pour améliorer les performances du stockage ?
Je cherche en particulier des options sysctl et sysfs dans des scénarios de production.