HP DL380 G7 + Smart Array P410i + sysbench -> mauvaises performances du raid 10

8

J'ai un système en cours d'exécution avec une faible utilisation d'E / S:

  1. HP DL380G7 (24 Go de RAM)
  2. Smart Array p410i avec 512 Mo de cache d'écriture soutenu par Battary
  3. 6 disques SAS 10 000 tr / min de 146 Go en RAID 10
  4. Debian Squeze linux, ext4 + LVM, hpacucli installé

iostat (cciss / c0d1 = baie raid10, dm-7 = partition lvm 60G pour le test):

Périphérique: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz attendent svctm% util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli "ctrl all show config"

Smart Array P410i dans l'emplacement 0 (intégré) (sn: 5001438011FF14E0)

   baie A (SAS, espace inutilisé: 0 Mo)


      lecteur logique 1 (136,7 Go, RAID 1, OK)

      lecteur physique 1I: 1: 1 (port 1I: boîtier 1: baie 1, SAS, 146 Go, OK)
      lecteur physique 1I: 1: 2 (port 1I: boîtier 1: baie 2, SAS, 146 Go, OK)

   baie B (SAS, espace inutilisé: 0 Mo)


      lecteur logique 2 (410,1 Go, RAID 1 + 0, OK)

      lecteur physique 1I: 1: 3 (port 1I: boîtier 1: baie 3, SAS, 146 Go, OK)
      lecteur physique 1I: 1: 4 (port 1I: boîtier 1: baie 4, SAS, 146 Go, OK)
      lecteur physique 2I: 1: 5 (port 2I: boîtier 1: baie 5, SAS, 146 Go, OK)
      lecteur physique 2I: 1: 6 (port 2I: boîtier 1: baie 6, SAS, 146 Go, OK)
      lecteur physique 2I: 1: 7 (port 2I: boîtier 1: baie 7, SAS, 146 Go, OK)
      lecteur physique 2I: 1: 8 (port 2I: boîtier 1: baie 8, SAS, 146 Go, OK)

   SEP (ID fournisseur PMCSIERA, modèle SRC 8x6G) 250 (WWID: 5001438011FF14EF)

hpacucli "ctrl all show status"

Smart Array P410i dans l'emplacement 0 (intégré)
   État du contrôleur: OK
   État du cache: OK
   État de la batterie / du condensateur: OK

Commande Sysbench

sysbench --init-rng = on --test = fileio --num-threads = 16 --file-num = 128 --file-block-size = 4K --file-total-size = 54G --file-test -mode = rndrd --file-fsync-freq = 0 --file-fsync-end = off run --max-requests = 30000

Résultats Sysbench

sysbench 0.4.12: benchmark d'évaluation de système multi-thread

Exécution du test avec les options suivantes:
Nombre de fils: 16
Initialisation du générateur de nombres aléatoires à partir de la minuterie.


Indicateurs d'ouverture de fichier supplémentaire: 0
128 fichiers, 432 Mo chacun
Taille totale du fichier: 54 Go
Taille de bloc 4Kb
Nombre de demandes aléatoires d'E / S aléatoires: 30000
Rapport lecture / écriture pour le test IO aléatoire combiné: 1,50
Utilisation du mode d'E / S synchrone
Faire un test de lecture aléatoire
Les discussions ont commencé!
Terminé.

Opérations effectuées: 30000 lecture, 0 écriture, 0 autre = 30000 total
Lecture 117.19Mb Écrit 0b Total transféré 117.19Mb (935.71Kb / sec)
  233.93 Demandes / s exécutées

Résumé de l'exécution du test:
    temps total: 128.2455s
    nombre total d'événements: 30000
    temps total pris par l'exécution de l'événement: 2051.5525
    statistiques par demande:
         min: 0,00 ms
         moyenne: 68.39ms
         max: 2010.15ms
         environ. 95 centile: 660,40 ms

Équité des fils:
    événements (avg / stddev): 1875.0000 / 111.75
    temps d'exécution (avg / stddev): 128.2220 / 0.02

iostat pendant le test

avg-cpu:% user% nice% system% iowait% steal% idle
           0,00 0,01 0,10 31,03 0,00 68,86

Périphérique: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz attendent svctm% util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Bonnie ++ v1.96

cmd: / usr / sbin / bonnie ++ -c 16 -n 0

Écriture d'un octet à la fois ... terminé
Écrire intelligemment ... fait
Réécriture ... terminée
Lire un octet à la fois ... terminé
Lire intelligemment ... fait
commencez-les ... terminés ... terminés ... terminés ... terminés ... terminés ...
Version 1.96 ------ Sortie séquentielle ------ - Entrée séquentielle - - Aléatoire -
Concurrence 16 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Taille de la machine K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8265,2 1
Latence 14899us 726ms 15194ms 100ms 122ms 665ms

1.96,1.96, seo-db, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265.2,1 ,,,,,,,,,,,,,, ,,,, 14899us, 726ms, 15194ms, 100ms, 122ms, 665ms ,,,,,,

Des questions

Ainsi, sysbench a montré 234 lectures aléatoires par seconde.
Je m'attends à ce qu'il soit au moins 400.
Quel peut être le goulot d'étranglement? LVM?
Un autre système avec mdadm raid1 + 2x disques 7200rpm affiche plus de 200 lectures aléatoires par seconde ...

Merci pour toute aide!

Oleg Golovanov
la source
Quelle est la taille des rayures? iostat semble que sysbench fonctionnait sur un seul disque physique.
Dmitri Chubarov
hpacucli dit que cette taille de bande est de 256k. Les périphériques DM-x d'iostat ne sont pas des lecteurs physiques, mais des partitions lvm. DM-7 est une partition lvm de 60 Go, où j'ai exécuté sysbench.
Oleg Golovanov
Que testez-vous exactement avec cette sysbenchligne de commande particulière ? Simulez-vous un scénario d'utilisation réel?
ewwhite
Je simule la base de données PostgreSql, qui utilise en interne des blocs de 4 Ko. Mon application effectue de nombreuses lectures / écritures aléatoires sur des fichiers Big Data (application arrêtée au moment du test)
Oleg Golovanov

Réponses:

10

Votre système est nettement sous-performant en fonction de vos spécifications matérielles. J'ai chargé l' sysbenchutilitaire sur quelques serveurs HP ProLiant DL380 G6 / G7 inactifs exécutant CentOS 5/6 pour vérifier leurs performances. Ce sont des partitions fixes normales au lieu de LVM. (Je n'utilise généralement pas LVM, en raison de la flexibilité offerte par les contrôleurs HP Smart Array)

Le DL380 G6 dispose d'une matrice RAID 1 + 0 à 6 disques sur un contrôleur Smart Array P410 avec 512 Mo de cache avec batterie. Le DL380 G7 dispose d'une baie SSD SLC d'entreprise à 2 disques. Les systèmes de fichiers sont XFS . J'ai utilisé la même ligne de commande sysbench que vous:

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

Mes résultats ont été de 1595 lectures aléatoires par seconde sur 6 disques.
Sur SSD, le résultat était 39047 lectures aléatoires par seconde . Les résultats complets sont à la fin de ce post ...

  • Quant à votre configuration, la première chose qui me saute aux yeux est la taille de votre partition de test. Vous remplissez presque la partition de 60 Go avec 54 Go de fichiers de test. Je ne sais pas si ext4 a un problème de performance à 90 +%, mais c'est la chose la plus rapide à modifier et à retester. (ou utilisez un plus petit ensemble de données de test)

  • Même avec LVM, certaines options de réglage sont disponibles sur cette configuration de contrôleur / disque. Il est utile de vérifier la lecture anticipée et de modifier le paramètre du planificateur d'E / S du cfq par défaut en date limite ou noop . Veuillez consulter la question et les réponses sur: Linux - réglage du contrôleur RAID matériel réel (scsi et cciss)

  • Quel est le taux de cache de votre contrôleur RAID? J'utilise généralement un solde d'écriture / lecture de 75% / 25%. Cela devrait être un test rapide. La baie de 6 disques s'est terminée en 18 secondes. Le vôtre a pris plus de 2 minutes.

  • Pouvez-vous exécuter un test bonnie ++ ou iozone sur la partition / baie en question? Il serait utile de voir s'il existe d'autres goulots d'étranglement sur le système. Je ne connaissais pas sysbench , mais je pense que ces autres outils vous donneront un meilleur aperçu des capacités du système.

  • Les options de montage du système de fichiers peuvent faire une petite différence, mais je pense que le problème pourrait être plus profond que cela ...

sortie hpacucli ...

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

sysbench DL380 G6 résultats 6 disques ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

sysbench DL380 G7 SSD résultats ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00
ewwhite
la source
Merci pour la réponse détaillée! Vos résultats sont impressionnants ... >> Je n'utilise généralement pas LVM, en particulier avec la flexibilité offerte par les contrôleurs RAID HP. Quelle flexibilité voulez-vous dire? >> Quel est le taux de cache de votre contrôleur RAID? 75/25, par défaut) >> Je pense que le problème est plus profond que ça ... yup! J'ai ajouté les résultats de bonnie ++ v1.96 à la fin de mon post principal. Il semble que les résultats ne soient pas si bons :( Au début, j'essaierai de m'éloigner de LVM et de refaire le test. Si cela n'aide pas - je suppose, il y a un problème avec le contrôleur de raid.
Oleg Golovanov
Pouvez-vous montrer votre bonnie++ligne de commande?
ewwhite
Désolé mon mauvais. Ligne de commande: / usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov
3
J'ai changé le planificateur de cfq en noop, et les résultats de référence ont considérablement augmenté! )) Maintenant, sysbench montre pour moi 1500+ lectures aléatoires / seconde ... Grand, grand merci :)
Oleg Golovanov
1
Essayez deadlineaussi ... Sous les charges de base de données, il peut fonctionner mieux que noop, et il y a quelques réglages supplémentaires dans votre /sys/block/cciss1/queue/iosched/si vous utilisez deadline. Voir cet article pour plus de détails sur un réglage plus fin. J'ai pu obtenir ce test jusqu'à 2600 lectures aléatoires / seconde en le faisant.
ewwhite