web-dev-qa-db-fra.com

Amélioration de la vitesse d'écriture de mdadm RAID-6

J'ai un mdadm RAID-6 sur mon serveur domestique de disques durs WD Green de 5x1 To. La vitesse de lecture est plus que suffisante - 268 Mb/s en jj. Mais la vitesse d'écriture est juste 37,1 Mb/s. (Les deux sont testés via dd sur un fichier de 48 Go, RAM la taille est de 1 Go, la taille de bloc utilisée pour les tests est de 8 ko)

Pourriez-vous suggérer pourquoi la vitesse d'écriture est si faible et existe-t-il un moyen de l'améliorer? L’utilisation de la CPU pendant l’écriture n’est que de 25% (c’est-à-dire la moitié d’un cœur d’Opteron 165). Aucune donnée essentielle pour le commerce et le serveur ne sont sauvegardés par UPS.

mdstat est:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
      2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

Aucune suggestion?

Des choses comme l'écriture, la barrière, nobh n'ont pas aidé. DD blocksize = 1M, 8M n'ont rien changé. Il semble que mdadm lit physiquement les secteurs pour calculer la parité même si cela n'a pas d'importance ... Est-ce correct?

Mise à jour: La dégradation de la vitesse après la modification du cache de bande était en réalité due à l'échec probable d'un disque dur pendant les tests, Nice :-D

Résolu: Après avoir augmenté le cache en bande et basculé vers un bitmap externe, mes vitesses sont de 160 Mo/s en écriture et de 260 Mo/s en lecture. :-RÉ

6
BarsMonster

Avez-vous essayé d'optimiser/sys/block/mdX/md/stripe_cache_size?

Selon cet article du forum (en norvégien, désolé) "le réglage de ce paramètre est d'autant plus essentiel que plus vous avez de disques et plus le système est rapide":

Sur mon système, j'obtiens les meilleures performances en utilisant la valeur 8192. Si j'utilise la valeur par défaut de 256, les performances en écriture chutent de 66%.

Citant sa vitesse de comparaison:

Disques: 8xSeagate 2TB LP (5900RPM) dans mdadm RAID6 (-n 512) (stripe_size_cache = 8192).

CPU: Intel X3430 (4x2,4 GHz, 8 Go de RAM ECC DDR3)

Vitesse: écriture séquentielle de 387 Mo/s, lecture séquentielle de 704 Mo/s, 669 recherches aléatoires par seconde.

Mon serveur domestique a presque les mêmes disques que vous, en utilisant RAID 5:

Disques: 4x1.5To WD Green en RAID 5 (stripe_size_cache = 256 - valeur par défaut)

CPU: Intel i7 920 (2,66 GHz, 6 Go de RAM)

Vitesse: écriture séquentielle de 60 Mo/s, lecture séquentielle de 138 Mo/s (selon Bonnie ++)

Il semble donc que les performances en écriture séquentielle représentent environ 50% des performances en lecture.

Pour ce qui est des performances attendues, = Linux Raid Wiki dit à propos de RAID 5:

Les lectures sont presque similaires aux lectures RAID-0; les écritures peuvent être assez coûteuses (nécessitant une lecture avant l'écriture, afin de pouvoir calculer les informations de parité correctes, comme dans les opérations de base de données), ou similaires à RAID-1. écrit (lorsque des écritures séquentielles plus importantes sont effectuées et que la parité peut être calculée directement à partir des autres blocs à écrire).

Et à propos de RAID 6:

Les performances en lecture sont similaires à celles de RAID-5 mais les performances en écriture sont pires.

9
j-g-faustus

essayer

echo 32768 > /sys/block/md0/md/stripe_cache_size

et vérifie ;)

4
DM1