Dans le monde du disque SSD et de la carte Fusion IO Drive

Dernièrement un de mes clients qui avait une instance SQL Server qui souffrait principalement de problèmes de performances IO a investi dans l’achat de disques SSD et d’une carte IO Fusion.  Les performances attendues pour les SSD sont de l’ordre de 20000 IOPS et 100000 IOPS pour la carte IO Fusion. Ces performances sont annoncées pour une taille de block de 4Ko en lecture aléatoire . Autant dire que c’était une bonne occasion de voir ce que ces nouvelles technologies ont dans le ventre lorsqu’il s’agit de SQL Server !!

La configuration des tests est la suivante :

icon_arrow Configuration du serveur et du stockage :

Serveur HP Proliant DL580G7 :

  • 32GB RAM
  • 2x Processors Xeon X7542 cadencés  à2.66GHz (6 cores par processeurs soit 12 CPU logiques)

En local sur le serveur :

  • 1GB Flash Back Cache
  • 2x 146GB 6G SAS 15k rpm disks modèle HP EH0146FAWJB
  • 4x 120GB Hot-Plug SSD drive HP 120GB 3G SATA SFF modèle ATA MK0120EAVDT  (avec une carte contrôleur HP SMART ARRAY P410in)
  • 1x 160GB HP PCIe IO Accelerator (100 000 IOPS)

Sur le SAN HITACHI USPVM relié sur le serveur :

  • 2 cartes HBA QLogic 
  • Fibre optique 4Go/s
  • 3 LUN en raid 5 avec disques SSD du même modèle (LUN dédiées à SQL Server)
  • 1 seul path défini pour chaque LUN

 

icon_arrow Configuration système :

Le serveur a été installé avec Windows Server 2008 R2 Enterprise avec un paramétrage par défaut.

 

icon_arrow Les architectures disques suivantes ont fait l’objet du test :

Architecture Nb de Disques Carte contrôleur RAID Cartes HBA Autres
RAID1 LOCAL 2 disques SSD Stripe size unit = 64 Ko, Accelerator IO  activité  (ratio 25/75 en lecture/écriture)            -                      -
RAID 10 LOCAL 4 disques SSD Stripe size unit = 64 Ko, Accelerator IO  activité (ratio 25/75 en lecture/écriture)            -                      -
RAID 5 SAN 4 disques SSD Stripe size unit = 256 Ko Paramètres par défaut Cache en lecture – écriture > 20GB
Carte HP IO Fusion       Formatage en mode Max write performance

De plus, chaque partition disque a été formaté avec une taille de cluster de 64 Ko en NTFS.

 

icon_arrow Les tests de performances ont été effectués à l’aide de SQLIO :

Block size (en Ko) 8, 64, 128, 256, 512, 1024
Outstanding 1, 8, 32, 64
Opérations Read / write
Mode Random
Nb threads 12 (1 thread par CPU)
Temps / série (en s) 60
File size 2 GB

96 séries de tests ont été effectuées. Les tailles de blocs choisies couvrent la plupart des opérations initiées par SQL Server en mode aléatoires telles que :

  • Lectures des données (hors index)
  • Lecture des index
  • Lazy writer
  • Checkpoint

Le nombre de threads est égale au nombre de CPU présents sur le serveur.

Mon temps étant limité pour effectuer ces tests (eh oui le temps c’est de l’argent !!!), je me suis vraiment concentré sur les opérations de lecture et écriture aléatoires.  Les résultats présentés ci-dessous montrent le nombre d’entrées / sorties et le débit maximum que peut offrir chaque architecture disque pour chaque série de test dont la latence est strictement inférieure à 20ms (au delà de ce seuil le sous système disque est considéré comme peu performant).

 

icon_arrow  Lectures aléatoires

image

image

 

image

 

image

 

icon_arrow  Ecritures aléatoires

image

 

image

 

image

 

image

 

On peut immédiatement remarquer que les performances annoncées pour les cartes HP IO Accelerator et des disques SSD sont au rendez vous tant en lecture qu’en écriture. Le nombre d’IOPS que peut traiter ce type de carte est tout simplement impressionnant. A contrario, les performances de l’architecture en RAID 5 du SAN ne sont pas satisfaisantes malgré la présence de disques SSD. Ceci ne me surprend pas en réalité car de nombreux composants entre en jeu dans ce type d’architecture (cartes HBA, fibre optique, fabriques, carte contrôleur etc). Chaque composant doit être configuré de manière rigoureuse pour obtenir de bonnes performances. Dans le cadre de mon test il n’y a eu aucune configuration particulière sur ces éléments.

Les configurations en RAID 1 et RAID 10 offrent des performances presque similaires en lecture, ce qui pourrait surprendre mais les performances de ces types d’architectures dépendent fortement de l’intelligence des cartes contrôleurs qui les gèrent. En effet, les cartes contrôleurs HP Smart Array récentes permettent, lorsqu’il s’agit de RAID1, de lire les données sur les 2 disques en même temps. Ceci permet de doubler la capacité de lecture. Le RAID 10, dans notre cas, double également la capacité de lecture (2 paires de disques en miroir qui sont elles mêmes agrégées). Il n’est pas sûr que la carte contrôleur HP Smart Array 410in puisse lire sur les 4 disques en même temps ce qui expliquerait les performances quasi égales en lecture entre le RAID1 et le RAID10 … Je me renseignerai sur le sujet et mettrais à jour ce billet le cas échéant.

Enfin en écriture on voit une nette diminution des performances pour l’ensemble des architectures de disques testées. La carte HP IO Fusion arrive encore première suivis par le RAID 10, RAID5 et RAID 1. On peut noter qu’en écriture le RAID5 est plus performant que le RAID1 dans notre contexte. Ceci peut s’expliquer par la présence d’un cache beaucoup plus important sur le SAN que sur la carte contrôleur locale et qui joue ici tout son rôle. Il faut noter également qu’en écriture aléatoire les performances IO des disques SSD HP 120GB 3G SATA SFF tombent en dessous des 5000 IOPS pour une taille de bloc de 4Ko.

Il aurait été intéressant de pousser le test avec d’autres configurations de CHUNK des cartes contrôleurs, d’allonger également la durée des tests ou encore d’augmenter la taille du fichier de test pour éviter la mise en cache … peut être une prochaine fois. Je terminerais ce billet en disant que la mise en place des disques SSD, de la carte HP PCIe IO Accelerator et d’une configuration optimale des partitions ont augmenté de 60% les performances de l’application client. Le jeu en a value la chandelle cette fois-ci !!! Les 40% restant ne pourront être gagnés que par de l’optimisation a un plus haut niveau (répartition des tables, index sur d’autres FILEGROUP, optimisation du code TSQL de l’application).

N’hésitez pas à me faire part de vos remarques !!

David BARBARIN (Mikedavem)
MVP SQL Server

3 réflexions au sujet de « Dans le monde du disque SSD et de la carte Fusion IO Drive »

  1. Salut,

    En -BH pour ma part.

    Oui je suis tout à fait d’accord avec toi concernant la carte SMART ARRAY. Il n’y a pas en effet une lecture parallèle sur les 2 disques mais bien une écriture effectuée sur le disque dont la tête est plus proche du secteur où se trouve la donnée à la fois. Cela équivaut à peu près à doubler le débit … mais pas tout à fait.

    ++

  2. Hello,

    Tu fais tes tests en -BH ou en -BS ?

    Autre chose, d’après ce que je comprends, la carte Smart Array fait du load balancing sur un RAID1, ce qui ne veut pas tout à fait dire qu’elle peut lire sur les deux disques en même temps. Elle lit les blocs alternativement sur les deux disques pour éviter d’avoir à attendre le retour d’un bloc avant d’en lire un autre, mais elle les lit bien l’un après l’autre, non ?

Laisser un commentaire