Si la performance des processeurs a explosé au cours des dernières années, celle des disques durs n’a pas suivi ce qui fait que le stockage est devenu un goulet d’étranglement pour les performances. Un goulet qu’il est possible de faire disparaître en utilisant judicieusement la mémoire Flash dans les systèmes de stockage modernes.

Résoudre le déséquilibre croissant entre les performances des processeurs et celles du stockage sur disque

Pour mieux comprendre pourquoi la mémoire Flash est l’objet de toutes les attentions dans le monde du stockage il suffit de regarder l’évolution des performances des processeurs, de la mémoire et du stockage au cours des dernières années. Comme l’explique remarquablement David A. Paterson, un professeur d’architectures informatiques de l’Université de Berkeley, la performance des processeurs a progressé bien plus rapidement que celle des mémoires et surtout que celle du stockage au cours des 30 dernières années.

Selon lui, la performance moyenne des processeurs a progressé à un rythme moyen de 50% par an, tandis que la bande passante mémoire progressait de 27% par an et que celle des disques durs progressait de 28% par an. Plus grave, la performance en nombre d’opération par seconde des disques durs n’a guère évolué au cours des 10 dernières années. Ainsi un disque d’entreprise à 10 000 tr/mn reste péniblement sous la barre des 150 IOPS (opérations d’entrées/sorties par seconde) en accès aléatoires, et un disque SATA peine à franchir la barre des 70 à 80 IOPS. Dans le même temps, celle des processeurs était multipliée par 100.

De même, les gains en latence ont été ridicules au cours des 25 dernières années. Seagate note ainsi qu’un disque d’entreprise avait un temps d’accès de 60 ms en 1987. Depuis on est passé à 5 ms pour les disques d’entreprises à 15 000 tr/mn, mais toujours à environ 9 ms pour un disque SATA 7200 tr/mn. Cette amélioration par un facteur de 6 à 12 fois peut paraître impressionnante. Sauf que dans le même temps, la latence d’accès à la mémoire a été divisée par plus de 100 000 (pour passer sous la barre de la nanoseconde) et la performance unitaire des processeurs (mesurée en Flops) a été multipliée par plusieurs dizaines de millions de fois.

Le résultat est un déséquilibre croissant : d’un côté des processeurs capables de performances théoriques croissantes et de l’autre des goulets d’étranglement terribles en matière d’accès aux données du fait des faibles performances des disques durs.

Si la capacité des disques durs a progressé rapidement depuis 10 ans, leur performance mesurée en IOPS n’a absolument pas évolué, créant un fossé croissant avec la performance des disques durs (Source : EMC).

La Flash réconcilie stockage et « compute »

Des chercheurs comme Jim Gray, chez Microsoft avaient pointé du doigt ce problème dès décembre 2006 et leurs prédictions se sont avérées fondées. La Flash est la solution aux problèmes de performance des disques durs et ce de façon spectaculaire – par exemple, un disque SSD peut facilement atteindre aujourd’hui les 100 000 IOPS en écritures aléatoires et la carte PCI-express à base de mémoire Flash SLC utilisée par EMC pour VFCache peut produire près de 350 000 IOPS en écriture aléatoire et plus de 750 000 IOPS en lecture, soit plus que ce que permettent plusieurs milliers de disques durs.

La mémoire Flash a fait ses débuts dans les systèmes de stockage comme remplacement des disques durs. EMC a ainsi été le premier grand constructeur à proposer des disques SSD dans ses baies de stockage (dès 2008). L’insertion limitée de SSD dans les baies de stockage en lieu et place de disques durs a permis la création de volumes très performants mais à un coût extrêmement élevé. Cette stratégie a permis de satisfaire une poignée d’utilisateurs à la recherche de performances élevées pour quelques applications.

Le tiering et la gestion de cache dopés par la Flash

La seconde étape est venue au tournant des années 2010 avec l’arrivée de nouvelles fonctions permettant d’optimiser l’utilisation de la mémoire Flash dans les baies. La première est le tiering (déplacement automatisé de données dans les baies ou hiérarchisation automatique de données) qui permet de créer des pools de stockage hybrides combinant mémoire Flash et disques traditionnels et de positionner automatiquement les données sur la classe de stockage adaptée en fonction des besoins. Chez EMC, cette fonction a pour nom Fast VP et de multiples autres appellations chez les autres constructeurs – « Adaptive Optimization » pour 3Par, « Dynamic tiering » chez Hitachi, Easy Tiering chez IBM… Le tiering a l’avantage de permettre une utilisation optimale de l’espace SSD en évitant d’y stocker des données dormantes. Comme l’explique Valdis Filks, le directeur de la recherche sur les technologies et les stratégies de stockage chez Gartner, rencontré récemment par SolutionITPME à Londres, « Si vous voulez exploiter un datacenter de façon efficace, vous n’avez pas d’autre choix que de recourir à la hiérarchisation automatique ».

Une seconde façon d’optimiser l’usage des SSD est de les utiliser comme un étage de cache dans les baies de stockage, ce qui permet de mutualiser l’espace SSD disponible au profit de l’ensemble des applications. La technologie Fast Cache des baies EMC permet ainsi typiquement de rerouter 95% des entrées/sorties vers l’espace de cache SSD. Et elle a l’avantage de fonctionner aussi bien en lecture qu’en écriture, contrairement à ce que permet la technologie Flash Cache des baies NetApp, limitée aux seules lectures. La possibilité d’utiliser la Flash comme cache en écriture est pourtant importante notamment pour certaines applications, par exemple, les applications de bureau virtualisé (VDI).

Les technologies de tiering et de gestion de la Flash comme cache ont contribué à la démocratisation des SSD au cours de l’année écoulée. On estime ainsi qu’un espace SSD représentant 2 à 5% de l’espace disque total d’une baie suffit pour optimiser 95% des opérations d’entrée sorties d’une baie de stockage. On peut ainsi optimiser de façon significative les performances d’une baie de stockage grâce à un ajout très limité de mémoire Flash (donc à un coût raisonnable).

La performance du stockage Flash (mesurée en IOPS/Go) est très supérieure à celle des disques durs. Et on voit aussi se creuser un écart entre la performance des disques SSD sur bus SAS et celle des dispositifs de stockage Flash sur bus PCI-express comme VFCache. (Source : EMC)

Les cartes Flash PCI-express : au service de la performance extrême

Une façon plus récente de faire usage de la mémoire Flash est de la positionner non pas dans les baies de stockage mais sur les serveurs afin de réduire la latence d’accès au minimum (on accède ainsi à un stockage local ultra-performant sans avoir à passer par le SAN). Un exemple d’une telle approche est la carte VFCache d’EMC. Cette carte PCI-express Flash s’installe directement dans le serveur qui accède aux données et sur un bus qui n’est pas un goulet d’étranglement (le bus PCI-express). VFCache propose deux modes de fonctionnement. Le premier permet de disposer d’un stockage local ultra-performant capable de supporter des centaines de milliers d’IOPS. Le second mode d’usage consiste à utiliser la carte VFCache comme un étage de cache pour accélérer l’accès aux baies de stockage SAN. On marie ainsi le meilleur des deux mondes. Les serveurs disposent d’un accès ultra-performant en lecture aux données situées sur les baies et ils se reposent sur ces dernières pour l’écriture, le stockage et la protection de ces données. On allie donc le meilleur des performances de stockage locales avec le meilleur en terme de protection des données sur le SAN.

Les tests réalisés en interne par EMC avec des cartes VFCache insérées dans des serveurs connectés par ailleurs à des baies Symmetrix VMAX et VNX ont ainsi mis en évidence un triplement de la bande passante de stockage et une réduction de 60% de la latence pour les applications transactionnelles reposant sur des logiciels comme Oracle ou SQL Server.

Sans surprise, de tels gains de performances se traduisent aussi par des gains économiques importants. Ainsi, les tests menés par EMC ont mis en lumière une multiplication par trois des performances d’une application transactionnelle basée sur Oracle avec les cartes de cache VFCache. Cela veut concrètement dire qu’avec VFCache un serveur peut supporter trois fois plus d’opérations que sans VFCache. Ou si on l’exprime d’une autre façon, qu’il faudra trois fois moins de serveurs (ou de processeurs) pour effectuer une quantité de travail donnée. Rappelons qu’une licence du SGBD Oracle entreprise coûte 380 000 $ par serveur bi-processeur Xeon récent (typiquement un serveur bi-socket Xeon E5-2600 à 16 cœurs) et qu’une division par trois du nombre de serveurs de bases de données génère donc une économie en termes de licences très supérieure au coût des cartes VFCache (et c’est sans compter les économies liées à l’achat des serveurs et à leur exploitation).

A lire aussi sur le web:

Matt Komorovski : a history of storage cost

L’évolution du prix des disques durs et des SSD

UCLA – Introduction to Operating Systems lectures