J'ai du mal à obtenir le débit maximal de ma configuration. Le matériel est le suivant:
- Processeur double quadricœur AMD Opteron (tm) 2376
- 16 Go de RAM DDR2 ECC
- deux contrôleurs RAID Adaptec 52245
- 48 disques SATA de 1 To configurés en 2 baies RAID-6 (bande de 256 Ko) + pièces de rechange.
Logiciel :
- Plain vanilla 2.6.32.25 kernel, compilé pour AMD-64, optimisé pour NUMA; Espace utilisateur Debian Lenny.
- tests de performances: disktest, bonnie ++, dd, etc. Tous donnent les mêmes résultats. Aucune différence ici.
- ordonnanceur io utilisé: noop. Ouais, pas de truc ici.
Jusqu'à présent, je supposais essentiellement que le striping (RAID 0) de plusieurs périphériques physiques devrait augmenter les performances de manière à peu près linéaire. Mais ce n'est pas le cas ici:
- chaque matrice RAID atteint environ 780 Mo / s en écriture, soutenue et 1 Go / s en lecture, soutenue.
- l'écriture sur les deux matrices RAID simultanément avec deux processus différents donne 750 + 750 Mo / s, et la lecture sur les deux donne 1 + 1 Go / s.
- cependant, lorsque je segmente les deux tableaux ensemble, en utilisant soit mdadm soit lvm, les performances sont d'environ 850 Mo / s en écriture et 1,4 Go / s en lecture. au moins 30% de moins que prévu!
- l'exécution de deux processus d'écriture ou de lecture parallèles contre les tableaux rayés n'améliore pas les chiffres, en fait, elle dégrade encore plus les performances.
Alors qu'est-ce qui se passe ici? Fondamentalement, j'ai exclu les conflits de bus ou de mémoire, car lorsque j'exécute dd sur les deux lecteurs simultanément, la vitesse d'écriture cumulée atteint en fait 1,5 Go / s et la vitesse de lecture dépasse 2 Go / s.
Ce n'est donc pas le bus PCIe. Je suppose que ce n'est pas la RAM. Ce n'est pas le système de fichiers, car j'obtiens exactement les mêmes chiffres en comparant le périphérique brut ou en utilisant XFS. Et j'obtiens également exactement les mêmes performances en utilisant soit l'entrelacement LVM soit l'entrelacement md.
Qu'est-ce qui ne va pas? Qu'est-ce qui empêche un processus d'atteindre le débit maximal possible? Le striping Linux est-il défectueux? Quels autres tests pourrais-je exécuter?
la source
striping
programme ne puisse pas fonctionner via un algorithme multi-threading. Puisque vous utilisez le soft RAID demdadm
, je vous suggère de jeter un œil à la source.Réponses:
Avez-vous essayé d'exécuter latencytop tout en faisant des tests de performances? pourrait être utile pour voir quel syscall linux est le coupable (le cas échéant).
la source
C'est une carte x8 PICe Gen 1 pour autant que je sache - le débit de données maximal absolu qu'elle pourrait prendre en charge est de 2 Go / s en supposant zéro surcharge. Adaptec prétend uniquement que les cartes peuvent supporter au mieux 1,2 Go / s et que vous dépassez cela.
Je suppose que puisque vous êtes en mesure de dépasser considérablement leurs performances déclarées avec deux ensembles RAID 0 agissant indépendamment de la charge supplémentaire, petite et tout est possible, cette répartition ajoute à cela une surcharge des processeurs RAID, ou peut-être du sous-système RAM sur le contrôleur, à des charges GByte / sec.
la source