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?
striping
programme ne puisse pas fonctionner via un algorithme multi-threading. Puisque vous utilisez le soft RAID de mdadm
, je vous suggère de jeter un œil à la source.