La plupart des systèmes Linux que je gère disposent de contrôleurs RAID matériels (principalement HP Smart Array ). Ils exécutent tous RHEL ou CentOS.
Je recherche des paramètres ajustables du monde réel pour aider à 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 RAID 1 + 0 et plusieurs broches (4+ disques).
Je passe beaucoup de temps à régler les paramètres du réseau Linux pour les applications de trading à faible latence et financières. Mais bon nombre de ces options sont bien documentées (modification des tampons d'envoi / réception, modification des paramètres de la fenêtre TCP, etc.). Que font les ingénieurs côté stockage?
Historiquement, j'ai apporté des modifications à l' ascenseur de planification d'E / S , en optant récemment pour les planificateurs deadline
et noop
pour améliorer les performances de mes applications. Au fur et à mesure que les versions de RHEL ont progressé, 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 de sous-système de stockage recommandés au fil du temps. Cependant, cela fait un moment que je n'ai vu aucune recommandation claire. Et je sais que les valeurs par défaut du système d'exploitation ne sont pas optimales. Par exemple, il semble que le tampon de lecture anticipée par défaut de 128 Ko soit extrêmement petit pour un déploiement sur du matériel de classe serveur.
Les articles suivants explorent l'impact sur les performances de la modification du cache de lecture anticipée et des valeurs nr_requests 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-pourquoi-le-réglage-vraiment-important
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
Par exemple, ce sont des 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
Quoi d'autre peut être réglé de manière fiable pour améliorer les performances de stockage?
Je recherche spécifiquement les options sysctl et sysfs dans les scénarios de production.
Plus que tout, tout dépend de votre charge de travail.
read_ahead_kb
peut vous aider s'il est vraiment utile de lire de nombreuses données d'un fichier à l'avance, comme lors de la diffusion vidéo. Parfois, cela peut vous blesser gravement. Oui, les 128 Ko par défaut peuvent sembler petits, mais avec suffisamment de simultanéité, ils commencent à sembler gros! D'un autre côté, avec un serveur tel qu'un serveur d'encodage vidéo qui ne convertit que les vidéos d'un format à un autre, cela pourrait être une très bonne idée de régler.nr_requests
, une fois accordé, peut facilement inonder votre contrôleur RAID, ce qui nuit encore aux performances.Dans le monde réel, vous devez surveiller les latences . Si vous êtes connecté au réseau SAN, jetez un œil à ce que vous souhaitez utiliser
iostat
,sar
ou vérifiez ce que vous voulez, et voyez si les délais de service des demandes d'E / S ont dépassé le plafond. Bien sûr, cela aide également les disques locaux: si les latences sont très très importantes, envisagez de réduire vos paramètres d'ascenseur d'E / S en rétrogradant max_requests et d'autres paramètres.la source
Pour info
read_ahead_kb
etblockdev --setra
sont juste des façons différentes de définir le même paramètre en utilisant différentes unités (kB vs secteurs):Alors le
dans votre exemple n'a aucun effet.
la source