Public Cloud accélère jusqu’à x10 sur les IOPS

Temps de lecture estimé : 4 minute(s)

Bonne nouvelle pour tous ceux qui font un usage intensif du stockage sur Public Cloud : nous avons entrepris le déploiement d’optimisations à la fois matérielles et logicielles qui nous permettent à terme d’afficher des performances en hausse sur l’ensemble des instances et des régions. Le gain n’est pas anecdotique : sur une instance de type B2-7, nous passons par exemple de 2 000 IOPS à 20 000 IOPS, soit un facteur 10 !

 

Avant de rentrer dans le détail de ces optimisations, un peu d’histoire. Au tout départ, les VMs hébergées sur Public Cloud étaient associées à du stockage distant : c’était la solution logique d’un point de vue mutualisation, mais la latence réseau limitait les performances dans des proportions trop importantes. Nous avons donc rapidement pris le parti de passer sur du stockage local, puis mis en place la redondance. Avec ce RAID local de SSD, nous pensions avoir atteint un niveau de performance très correct.

Certains clients nous ont toutefois fait remonter un son de cloche un peu différent : pour eux nous représentions bien le meilleur rapport qualité prix du marché en termes de CPU, de bande passante, etc., mais les résultats obtenus avec des applications particulièrement exigeantes en termes de stockage venaient ternir la note finale. La conclusion s’imposait d’elle-même : à l’heure des SSD NVMe, certains de nos choix logiciels méritaient d’être revus.

Trouver la bonne combinaison

Nos tests ont mis en lumière une première piste d’optimisation : Qcow, le format d’image disque utilisé pour le stockage des machines virtuelles. Le copy-on-write (copie sur écriture) présente bien des avantages en environnement virtualisé, mais il implique aussi que le système aille vérifier sur le disque physique à chaque fois qu’une donnée est appelée ou écrite, soit une perte de temps non négligeable.

En parallèle se posait la question du file system. LVM donnait d’excellents résultats dans les benchmarks synthétiques, mais les performances se révélaient nettement moins attrayantes avec des tests applicatifs correspondant à la réalité du terrain : en pratique, nos clients qui font un usage intensif de Redis, MongoDB ou Hadoop ne se limitent pas à aligner des blocs de 4K. Il fallait donc une nouvelle phase de benchs avec des outils plus représentatifs.

Comparaison des différents formats de stockage, bench réalisé par l’équipe Metrics d’OVH. En rouge : les performances de PCI Raw avec io=native sur NVME. En orange, celles obtenues avec LVM et en jaune celles réalisées avec les VMs avant optimisation. Enfin en vert, les performances des serveurs dédiés qui sont la mesure étalon dont nous cherchons à nous approcher, « Lower is better ».

Comme le montre le bench ci-dessus, les résultats obtenus avec RAW se sont avérés très proches de ceux des serveurs dédiés.

A l’issue du processus, nous avons proposé à quelques clients de tester ce qui nous semblait être la bonne combinaison, à savoir une migration de Qcow vers RAW et un système de fichiers basé sur une version optimisée d’Ext4. Bonne nouvelle, elle fait l’unanimité chez les premiers clients testeurs : ils mesurent des performances en IOPS jusqu’à dix fois supérieures, comme le montrent les benchs ci-dessous.

Migration

Arrive donc maintenant la deuxième phase : déployer à grande échelle pour que ces améliorations soient accessibles au plus grand nombre. Le chantier va prendre un peu de temps : le matériel requis et sa configuration demandent en effet la dernière version en date d’OpenStack, Newton, vers laquelle toutes nos infrastructures sont progressivement en train de migrer. La bonne nouvelle, c’est que ces optimisations n’ont pas d’impact sur le prix ou la nomenclature de nos instances Public Cloud : elles sont simplement intégrées à l’offre existante. En réalité, vous en profitez peut-être même déjà !

Si les IOPS sont un critère de choix pour vos activités dans le cloud, nous vous invitons d’ailleurs à vous faire une idée concrète des performances proposées en quelques clics : il vous suffit de lancer une VM B2 (General Purpose) hébergée sur la région GRA5.

Et après ?

Nous avons la conviction que les usages intensifs en termes d’IO ont tout à fait leur place dans notre Public Cloud. En parallèle de la migration en cours, nous préparons donc l’étape suivante, celle qui permettra de multiplier encore par 10 le niveau de performance. Sans trop entrer dans les détails d’une offre encore au stade de « work in progress », imaginez simplement que votre VM soit un jour capable d’accéder en PCI passthrough à une grappe de SSD NVMe montés selon le RAID de votre choix et dédiés à vos besoins…