Un cloud est-il simplement un ordinateur qui tourne chez quelqu’un d’autre ? Cet ordinateur possède-t-il les performance de celui qui fonctionne chez moi, dans mon datacenter ? Les offreurs de solutions Cloud sont-ils tous équivalents ? Leurs prix, fonction d’une configuration technique, sont-ils comparables ?

Ce sont autant de questions qui sont en relation avec la performance d’un Cloud et qu’il est important de bien maitriser dans le choix de son fournisseur d’infrastructure.

Chez be ys Cloud, nous avons benché nos solutions et celles de nos concurrents, à la fois pour connaitre la qualité de notre offre, mais aussi évaluer l’état du marché. Nous allons vous livrer quelques éléments de ces recherches.

Qu’est-ce qu’une infrastructure cloud ?

Contrairement à une informatique personnelle ou de bureau, une infrastructure Cloud se décompose en plusieurs composants séparés et mutualisés entre plusieurs clients ou plusieurs applications.

Ces composants permettent la redondance, la croissance et la mutualisation des solutions. De cette façon, l’infrastructure Cloud peut répondre de façon transparente aux exigences de croissance des besoins utilisateurs, tout en assurant un niveau de disponibilité maximal.

Pour cela, les composants tels que le réseau, les unités de calcul et le stockage sont gérés de façon spécifique et indépendante. Pour chacun l’architecture employée (mais rarement exposée) à autant d’importance que les caractéristiques techniques intrinsèques usuellement partagées comme la technologie des disques durs ou le nombre de processeurs.

Chacun des composants ci-dessus rempli une tâche particulière qui va pouvoir être pilotée, automatisée, supervisée de sorte qu’il soit possible d’automatiser les demandes des clients, d’assurer un très haut niveau de disponibilité et maintenir un niveau de performance optimum supportant la croissance et les pics de charges. Tout ceci devant aussi être tolérant à tous types de pannes.

Le modèle Cloud

Le modèle du Cloud (IaaS) est un modèle de paiement à l’usage dans lequel sont facturés du temps processeur, du temps mémoire et de l’espace disque souvent classé par niveau de performance. Souvent, la bande passante réseau, entrante ou sortante est elle aussi facturée.

Ce modèle semble permettre une comparaison rapide des prix des fournisseurs les uns avec les autres.

Toutefois, le nombre de paramètres, variable d’un opérateur à un autre, rend le calcul plus compliqué qu’il n’y paraît, au point qu’il est souvent nécessaire de faire appel à des experts de chaque fournisseur pour ne pas omettre un de ces paramètres dont l’impact sur la facture finale peut être de premier ordre.

be ys Cloud, fait le choix de réduire le nombre de ces paramètres pour les rendre plus simples et compréhensibles. Il ne s’agit pas, pour nous, d’attirer nos clients pour un prix en trompe l’oeil, ni de faire d’eux des experts en marketing Cloud.

Le second point d’attention dans le domaine est, au-delà du prix associé à chaque métrique, de bien s’assurer que d’un fournisseur à l’autre, la métrique évoquée soit bien de qualité équivalente. Il est en effet à la discrétion du fournisseur de choisir le niveau de mutualisation de ses infrastructures comme des règles de qualité de service (QoS) qu’il choisit d’implémenter.

Performance processeurs

Les fournisseurs de Cloud promettent des CPU Virtuels ou VCPU, cependant, la puissance d’un processeur virtuel dépend de critères qui rendent la performance très variable. Si bien que pour un même cas d’usage, vous pouvez en consommer 2, 4 ou 8 tout en ayant le même niveau de service.

Des unités de mesure normalisées permettent une comparaison objective, associée à des traitements particuliers. Ce sont le cas des tests SPEC (Standard Performance Evaluation Corporation), par exemple, permettant une comparaison des architectures techniques. Toutefois, ces données ne sont, pour ainsi dire, jamais disponibles sur le marché. Il y a une raison à cela, cette performance dépend largement du taux de mutualisation.

En effet, un fournisseur de Cloud va surallouer les processeurs physiques en créant plus de processeurs virtuels qu’il y a de files d’exécution (Thread). Ce choix est un bon choix d’un point de vue technologique car il permet de mieux utiliser les serveurs physiques sur lesquels sont exécutées les machines virtuelles clientes dont la charge est variable dans le temps, en général à des moments différents.

Ce taux de mutualisation est variable d’un fournisseur de Cloud à un autre, mais aussi en fonction du niveau de l’offre au sein du catalogue de chacun. Néanmoins, sans information sur le niveau d’utilisation des ressources physiques et du taux de sur-allocation, il est impossible de juger de la performance autant technique que financière d’une offre par rapport à une autre.

Performance disques

Autres élément critique dans la performance d’un système, aujourd’hui bien au-delà de la performance processeur, la performance des disques, aussi appelée performance I/O, est fondamentale.

Une infrastructure de stockage d’un fournisseur Cloud peut être directement attachée au sein des serveurs, mais ceci n’est pas la norme car cette architecture impose de nombreuses contraintes dans la gestion du cycle de vie des servers et deviendra vite problématique en situation de crise et défaillance matérielle. La performance de solutions intégrées dépend très fortement des technologies employées, non seulement concernant le type de support (HDD, SDD, NVMe) mais aussi et avant tout en termes de technologie de contrôleur disque et sa capacité à répondre à des demandes concurrentes.

De fait, la majorité des infrastructures Cloud utilisent des systèmes de stockage dédiés offrant aux machines virtuelles des espaces de stockage eux aussi virtuels. Ces infrastructures permettent une répartition très large des données sur un nombre, conséquent, de plusieurs centaines de disques. Si bien que lorsqu’une donnée est accédée, ce n’est pas un disque mais peut être une dizaine qui sont sollicités en parallèle. Usuellement ces technologies ont un temps de réponse plus faible que des disques intégrés au seins des serveurs, toutefois, elles ont une capacité beaucoup plus grande à répondre à une très grande sollicitation. L’utilisation massif de support très rapides comme le NVMe n’est en aucun cas une garantie de performance tant l’architecture, l’équilibrage, les taille des caches mémoires et la tailles des connexions fibres ou les règles de qualité de service sont importants dans l’équation.

L’infrastructure de stockage étant la clef de la performance d’un système reposant sur un usage intensif de bases de données SQL comme NoSQL, nous invitons chacun à prêter une attention particulière à cette performance avant de retenir un fournisseur. Au-delà des unités très abstraites utilisées par chaque fournisseur de Cloud, nous vous recommandons de procéder à des tests et des mesures régulières.

Mesurer la performance

Comme nous l’avons vu précédemment, il existe des tests normalisés comme les test SPEC permettant la comparaison de systèmes entre eux et permettant surtout de se comparer à une base de système existants. Toutefois ces tests sont assez peu adaptés à la comparaison d’architecture Cloud et les outils peu accessibles pour un usage individuel ou professionnel à petite échelle.

Il existe de nombreux outils de mesure de la performance proposant des périmètres distincts. Nombre d’entre eux sont open-source et présent sur de nombreuses distributions Linux.

Lors de leur utilisation, nous veillerons à toujours nous assurer que les versions sont identiques, que le système d’exploitation sous-jacent est lui aussi identique, sans quoi nous risquerions de mesurer la performance logicielle plutôt que la performance de l’infrastructure Cloud qui nous intéresse. Nous veillerons aussi à choisir le bon outil par rapport à la typologie de charge que nous souhaitons déployer.

Nous allons vous proposer quelques outils libres que nous avons utilisé. Cette liste n’est pas exhaustive.

Sysbench

Sysbench est un outil open-source créé par Alexey Kopytov qui intègre des tests de performance processeur, mémoire, IO et base de données. Intégré à de nombreuses distributions il permet de déployer et automatiser des tests de performance de façon assez simple. Il est aussi extensible pour y ajouter des tests personnalisés.

Nous avons en particulier utilisé cet outil pour mesurer la performance d’une solution intégrant une base de données telles que le sont la majorité des applications modernes déployées dans les environnements Cloud.

UnixBench

Unixbench est un logiciel développé depuis 1983 par l’université de Monash puis repris par différents développeurs. La performance est mesurée par rapport à un étalon qu’est une SPARC Station 20-61 évaluée à 10.

Nous avons en particulier utilisé cet outil pour mesurer la performance des composants spécifiques tel que le processeur ou la mémoire.

Performance be ys Cloud comparée au marché

Nous avons confié le travail de comparaison à un groupe d’étudiants (Clément, Manoah, Max, Baptiste et Loup) que nous remercions chaleureusement pour la qualité de leur travail. Nous les avons bien entendu accompagnés sur le plan technique, mais nous les avons laissés maître du choix des paramètres de test et construction des résultats. Ce travail que nous partageons aujourd’hui à, en premier lieu, été réalisé pour nous benchmarker et nous améliorer.

Nous ne donnerons pas, bien entendu, le nom des compétiteurs avec lesquels nous avons réalisé cette comparaison. Il s’agit des principaux acteurs du marché du Cloud utilisés en France.

Performance processeur

La performance processeur est mesurée à l’aide de l’outil sysbench avec la commande suivante:

sysbench --test=cpu --cpu-max-prime=20000 run

Nous serveurs ont montré les meilleurs résultats du marché, ceci illustre notre stratégie de recourir à des serveurs de traitement récents, reposant sur les processeurs les plus performants du moment.

Performance CPU Cloud comparée

Performance des I/Os

La performance disque ou performance I/O est réalisée avec l’outil sysbench, il se compose de deux phases, une phase de préparation qui consiste à créer un jeu de test avec des fichiers qui seront ensuite accédés de différences façons par le logiciel de bench.

Nous créons un fichier de 1GB qui va par la suite être utilisé pour les tests de performance.

sysbench fileio --file-total-size=1G --file-test-mode=rndrw --time=300 --max- requests=0 --file-io-mode=async --file-extra-flags=direct --file-num=1 --file-rw-ratio=1 --file_fsync-freq=0 prepare

Ensuite, sur ce fichier, nous allons réaliser un test d’écriture aléatoire dans le fichier. Pour chaque compétiteur, nous avons choisi, lorsqu’il était disponible le stockage qualifié « haute performance ».

Les résultats de tests sont obtenus avec la commande suivante :

sysbench fileio --file-total-size=1G --file-test-mode=rndrw --time=300 --max- requests=0 --file-io-mode=async --file-extra-flags=direct --file-num=1 --file-rw-ratio=1 --file_fsync-freq=0 run

Nous constatons des résultats totalement différents entre les différents fournisseurs de Cloud du marché. be ys Cloud obtient ici aussi d’excellents résultats sur notre offre VPS.

Performance I/O brute des différents fournisseurs Cloud du marché

Performance applicative

Ce dernier test implique l’utilisation d’une base de données MariaDB qui elle-même repose sur un système de fichier. Le test sollicite cette base de données en ajoutant, accédant et supprimant des entrées. Il correspond à des opérations très classiques d’un logiciel métier ordinaire. Ce test va solliciter l’ensemble des ressources de la machine : I/O, mémoire et processeur.

L’outil sysbench est utilisé pour réaliser ce test. Nous utilisons deux procédures de test. La première en lecture seule correspond à un usage de type site web.

sysbench oltp_read_only --mysql-db=test --threads=4 --mysql-host=localhost --mysql- user=root --mysql-password=VOTREM --tables=10 --table-size=1000000 prepare

La seconde, est de type lecture / écriture qui correspond à une charge de type transactionnelle (ERP…)

sysbench oltp_read_only --mysql-db=test --threads=4 --mysql-host=localhost --mysql- user=root --mysql-password=VOTREM --tables=10 --table-size=1000000 prepare

Pour les deux tests, la base est initialisée avec 10 tables contenant initialement 1M de lignes chacune.

Chaque fois que cette option était disponible chez nos concurrents, nous avons choisi l’option utilisant des disques rapides.

Nous constatons ci-dessous que la performance en lecture de l’offre be ys Cloud est au-dessus du marché sur notre offre VPS. Il en va de même sur la performance en écriture.

Performance base de données de différents fournisseur de Cloud

Conclusion

Si nous sommes très satisfaits des résultats mesurés par ces tests, s’ils illustrent tout le travail d’ingénierie et d’optimisation que font nos équipes au quotidien, nous ne les publions pas dans le but de vous convaincre que be ys Cloud est l’offre la plus performante du marché, ce à quoi nous ne prétendons pas.

Nous partageons avec vous ces résultats pour vous inciter à considérer ce critère de performance dans vos choix l’hébergement Cloud et relativiser vos critères de prix à la puissance réellement délivrée. La performance technique est le coeur de la satisfaction de vos utilisateurs.