Dans le cadre du dossier de comparatif des offres hosting VPS, j’ai testé Ikoula. Ils proposent différentes offres. Une offre plus adaptée aux professionnels Flex’Servers NG et une offre adaptée au publique qui est facturée à l’heure.
Je tiens à les remercier d’avoir accepté de mettre à ma disposition une machine pour ce test.
Ikoula Flex’Servers NG 1 CPU
Détail de l’offre Medium :
- Virtualisation : Hyper-V
- Processeurs : 1 CPU intel Xeon
- Mémoire : 1Go
- Espace disque 50 Go
- ligne : 100Mbps
- SLA : 99,9% ( Réseau / Garantie de connectivité)
- 1IPv4
- options proposées via leur interface : consulter les statistiques, paramétrer les DNS secondaires, modifier le reverse DNS, installer un Rescue MX, lancer un scan de sécurité
- Prix : 12,99€HT/mois
Speedtest.py
Cela permet de tester la vitesse en upload et download de votre serveur linux.
Voici les commandes pour télécharger et exécuter le script python :
$ wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py $ chmod +x speedtest-cli $ ./speedtest_cli.py Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from Ikoula Net SAS (94.125.162.127)... Selecting best server based on latency... Hosted by Bouygues Telecom (Paris) [1.59 km]: 6.124 ms Testing download speed........................................ Download: 184.44 Mbits/s Testing upload speed.................................................. Upload: 49.87 Mbits/s
On voit déjà que la ligne présente un bon ratio download/upload. On est à 23Mo/s en download et 6,2Mo/s en upload. Ce qui est plus que satisfaisant pour une utilisation personnel, mais convient très bien pour une PME voulant disposer d’un espace d’échange de fichiers par exemple.
Le temps de réponse du test est plus que correcte.
Téléchargement de fichier important
Le test est effectué avec un wget de plusieurs fichiers fourni comme moyen de test :
- fichier OVH France : wget http://proof.ovh.net/files/1Gio.dat
- fichier Thinkbroadband UK : wget http://download.thinkbroadband.com/1GB.zip
- fichier tweak.nl Pays-Bas : wget http://speedtest.tweak.nl/1000mb.bin
Voici les résultats pour Ikoula :
- fichier OVH France 1Go : 6.2 MB/s (6,99ms)
- fichier Thinkbroadband UK 1Go : 5.98 MB/s (11ms)
- fichier tweak.nl Pays-Bas 1Go : 5.71 MB/s (18,5ms)
Unixbench
Il permet de tester différents paramètres de votre serveur.
Pour l’installer vous aurez besoin de make et quelques autres paquets :
apt-get install libx11-dev libgl1-mesa-dev libxext-dev perl perl-modules make gcc cd /opt && wget https://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz && tar -xzf UnixBench5.1.3.tgz cd UnixBench ./Run 1 CPU in system; running 1 parallel copy of tests Dhrystone 2 using register variables 16572540.8 lps (10.0 s, 7 samples) Double-Precision Whetstone 2558.4 MWIPS (9.9 s, 7 samples) Execl Throughput 2462.5 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 479691.8 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 150111.8 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 1082050.6 KBps (30.0 s, 2 samples) Pipe Throughput 1127864.6 lps (10.0 s, 7 samples) Pipe-based Context Switching 213930.1 lps (10.0 s, 7 samples) Process Creation 7628.7 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 4153.6 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 582.6 lpm (60.0 s, 2 samples) System Call Overhead 2556591.4 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 16572540.8 1420.1 Double-Precision Whetstone 55.0 2558.4 465.2 Execl Throughput 43.0 2462.5 572.7 File Copy 1024 bufsize 2000 maxblocks 3960.0 479691.8 1211.3 File Copy 256 bufsize 500 maxblocks 1655.0 150111.8 907.0 File Copy 4096 bufsize 8000 maxblocks 5800.0 1082050.6 1865.6 Pipe Throughput 12440.0 1127864.6 906.6 Pipe-based Context Switching 4000.0 213930.1 534.8 Process Creation 126.0 7628.7 605.5 Shell Scripts (1 concurrent) 42.4 4153.6 979.6 Shell Scripts (8 concurrent) 6.0 582.6 971.0 System Call Overhead 15000.0 2556591.4 1704.4 ======== System Benchmarks Index Score 920.3
Il présente un score acceptable, sans toutefois être impressionnant. Le score est 3x plus important qu’un Core i7 lancé sur un seul threads et représente 3/4 d’un Core i7 si les opérations sont lancés sur les 4 coeurs. Le descriptif de l’offre parle de vCore Xeon
Processeur
Le test suivant est fait via la génération aléatoire udev, qui charge un coeur du processeur pour écrire un fichier de 100Mo de données aléatoires :
$ dd if=/dev/urandom of=/dev/null bs=1M count=100 100+0 enregistrements lus 100+0 enregistrements écrits 104857600 octets (105 MB) copiés, 18,9761 s, 5,5 MB/s $ dd if=/dev/urandom of=/dev/null bs=1M count=500 500+0 enregistrements lus 500+0 enregistrements écrits 524288000 octets (524 MB) copiés, 98,1086 s, 5,3 MB/s
On atteint 5.5 Mo/s et le même est fait juste après pour un fichier de 500Mo pour atteindre 5.3 Mo/s. C’est assez constant dans le temps, mais je m’attendais à un chiffre un peu plus élevé
Pour tester la compression via xz, gzip et pbzip2, il faut tenir en compte également la vitesse du disque. Le fichier utilisé pour le test est celui d’ovh (http://ovh.net/files/1Gio.dat) :
$ time cat 1Gio.dat | xz > 1Gio.dat.xz real 12m59.066s user 12m38.419s sys 0m12.745s $ time cat 1Gio.dat | gzip > 1Gio.dat.gz real 1m25.238s user 1m17.573s sys 0m4.828s $ time cat 1Gio.dat | pbzip2 -p2 -9 -c > 1Gio.dat.bz2 real 9m17.323s user 9m9.242s sys 0m6.220s
Au niveau compression Xz, il se défend très bien, tout en étant 2 fois plus lent qu’un Core i7 (xz n’utilise qu’un seul thread). Pour la compression gzip et bzip rien à redire, ces valeurs sont bonnes.
SysBench
Différents tests de benchmarkt sont possibles avec Sysbench : test CPU, test I/O, test de mémoire vive, etc.
Performance du CPU
Ce test est basé sur 1 seul thread (pour les VPS proposant 2vCores on travaillera avec 2 threads pour relativiser les résultats) :
# sysbench --test=cpu --num-threads=1 --cpu-max-prime=20000 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 20000 Test execution summary: total time: 43.2052s total number of events: 10000 total time taken by event execution: 43.1905 per-request statistics: min: 2.90ms avg: 4.32ms max: 32.82ms approx. 95 percentile: 6.33ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 43.1905/0.00
Il se défend très bien, 10 fois plus rapide qu’un babana pi, mais 4x moins d’un core i7-2760QM 2,4Ghz (test fait sur 2 threads…).
Performances des I/O
Dans un premier temps on prépare des fichiers de tests. Il est mieux de mettre 10x plus que la RAM, mais on fait avec l’espace qu’on a et un vps n’en a pas beaucoup, on essaye donc de partir sur 15Go. Ici Ikoula propose 2 parties dans son offre de 50Go :
- 10Go pour le système (9Go pour la racine, 500Mo pour tmp et 500Mo pour /var/tmp)
- 40Go pour /data
Nous allons voir la différence entre ces 2 espaces de stockage. Je pense que les data seront dans un SAS moins performant que la partie système.
$mkdir test $cd test $ sysbench --test=fileio --file-total-size=7G prepare sysbench 0.4.12: multi-threaded system evaluation benchmark 128 files, 57344Kb each, 7168Mb total Creating files for the test... $ sysbench --test=fileio --file-total-size=7G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run Running the test with following options: Number of threads: 1 Initializing random number generator from timer. Extra file open flags: 0 128 files, 56Mb each 7Gb total file size Block size 16Kb Number of random requests for random IO: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Time limit exceeded, exiting... Done. Operations performed: 31560 Read, 21040 Write, 67253 Other = 119853 Total Read 493.12Mb Written 328.75Mb Total transferred 821.88Mb (2.7396Mb/sec) 175.33 Requests/sec executed Test execution summary: total time: 300.0024s total number of events: 52600 total time taken by event execution: 257.0355 per-request statistics: min: 0.01ms avg: 4.89ms max: 181.35ms approx. 95 percentile: 18.45ms Threads fairness: events (avg/stddev): 52600.0000/0.00 execution time (avg/stddev): 257.0355/0.00 $ sysbench --test=fileio --file-total-size=7G cleanup $ cd /data $ sysbench --test=fileio --file-total-size=15G prepare sysbench 0.4.12: multi-threaded system evaluation benchmark 128 files, 122880Kb each, 15360Mb total Creating files for the test... root@80476hpv162127:/data# sysbench --test=fileio --file-total-size=15G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Initializing random number generator from timer. Extra file open flags: 0 128 files, 120Mb each 15Gb total file size Block size 16Kb Number of random requests for random IO: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Time limit exceeded, exiting... Done. Operations performed: 51601 Read, 34400 Write, 110080 Other = 196081 Total Read 806.27Mb Written 537.5Mb Total transferred 1.3123Gb (4.4791Mb/sec) 286.67 Requests/sec executed Test execution summary: total time: 300.0046s total number of events: 86001 total time taken by event execution: 247.3312 per-request statistics: min: 0.01ms avg: 2.88ms max: 195.32ms approx. 95 percentile: 13.14ms Threads fairness: events (avg/stddev): 86001.0000/0.
Sur la partie système, nous avons en lecture 493.12Mb et 328.75Mb en écriture (2,74Mb/sec). C’est 70% plus rapide qu’un disque dur USB relié au banana pi. Cela sera suffisant pour la plupart des applications, mais pas forcement pour une base de données importante.
Pour la partie data, contrairement à ce que je m’attendais, les performances sont meilleures ; 806,27Mb en lecture et 537,5Mb en écriture (4,48Mb/sec), presque 3 fois plus rapide qu’un disque dur USB relié au banana pi cette fois. Si vous comptez mettre un service utilisant beaucoup d’I/O, je vous conseille de mettre les données dans /data ; quitte à créer quelques liens symboliques afin de gagner en performance.
Performance mémoire
Niveau performance mémoire, les valeurs importantes sont les 225383 ops/sec et 220.10 MB/sec.
$ sysbench --test=memory --memory-total-size=800M run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing memory operations speed test Memory block size: 1K Memory transfer size: 800M Memory operations type: write Memory scope type: global Threads started! Done. Operations performed: 819200 (225383.66 ops/sec) 800.00 MB transferred (220.10 MB/sec) Test execution summary: total time: 3.6347s total number of events: 819200 total time taken by event execution: 2.8060 per-request statistics: min: 0.00ms avg: 0.00ms max: 10.72ms approx. 95 percentile: 0.00ms Threads fairness: events (avg/stddev): 819200.0000/0.00 execution time (avg/stddev): 2.8060/0.00
Les performances d’accès mémoire sont médiocres, elles sont de moitié moins que celle d’un core i7 avec DDR3. Mais concrètement, cela n’a pas d’impact dans ce cas-ci. Avec nos 1Go de RAM, on ne va pas pouvoir faire tourner des services gourmands en mémoire de toute façon. C’est donc adapté au service proposé.
Lecture/Ecriture via dd
Voici le test effectué avec un fichier de 2Go, en écriture et lecture. Attention au cache disque pour la vitesse de lecture,
$ dd if=/dev/zero of=/root/zero bs=1M count=2000 ; sleep 60 ; dd if=/dev/zero of=/data/zero bs=1M count=2000 2000+0 enregistrements lus 2000+0 enregistrements écrits 2097152000 octets (2,1 GB) copiés, 4,04273 s, 519 MB/s 2000+0 enregistrements lus 2000+0 enregistrements écrits 2097152000 octets (2,1 GB) copiés, 6,00628 s, 349 MB/s $ dd if=/root/zero of=/dev/null bs=1M ; sleep 60 ; dd if=/data/zero of=/dev/null bs=1M
On atteint une vitesse importante pour le système 519 Mo/s en écriture et 198 Mo/s en lecture. Pour data, on obtient 349 Mo/s en écriture et 250 Mo/s en lecture. Ce qui est très remarquable pour un VPS de ce type.
Ces résultats sont contradictoires avec les tests de sysbench. Ils montrent ici qu’à court terme (10 secondes), la partition racine est plus rapide que celle des data. Les disques systèmes sont peut-être dans un SAN équipé en SSD pour le cache. Ceci serait une explication à cette incohérence.
Mais quoi qu’il en soit, les performances sont vraiment au rendez-vous sur ce point, on est sur une infrastructure qui répond aux besoins.
Apache local
Ceci est fait par un test de 1000 requêtes avec 30 connexions actives sur un Pydio 6.0.2. Pour plus de renseignement sur les options de AB, j’y ai consacré un article.
$ ab -n 1000 -c 30 http://server/pydio Server Software: Apache/2.2.22 Server Hostname: 94.125.162.127 Server Port: 80 Document Path: /pydio Document Length: 316 bytes Concurrency Level: 30 Time taken for tests: 0.423 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 567000 bytes HTML transferred: 316000 bytes Requests per second: 2364.62 [#/sec] (mean) Time per request: 12.687 [ms] (mean) Time per request: 0.423 [ms] (mean, across all concurrent requests) Transfer rate: 1309.32 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 2 1.7 2 13 Processing: 4 10 3.4 9 33 Waiting: 1 8 3.0 7 32 Total: 6 12 3.6 11 35 Percentage of the requests served within a certain time (ms) 50% 11 66% 12 75% 13 80% 14 90% 18 95% 21 98% 22 99% 23 100% 35 (longest request)
Les temps de réponse d’Apache sont tout à fait correcte.
Apache distant
Server Software: Apache/2.2.22 Server Hostname: 94.125.162.127 Server Port: 80 Document Path: /pydio Document Length: 316 bytes Concurrency Level: 30 Time taken for tests: 4.180 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 714000 bytes HTML transferred: 316000 bytes Requests per second: 239.22 [#/sec] (mean) Time per request: 125.408 [ms] (mean) Time per request: 4.180 [ms] (mean, across all concurrent requests) Transfer rate: 166.80 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.1 1 2 Processing: 31 99 425.2 36 4178 Waiting: 31 98 425.2 36 4178 Total: 32 99 425.3 37 4180 Percentage of the requests served within a certain time (ms) 50% 37 66% 40 75% 42 80% 45 90% 71 95% 96 98% 165 99% 3161 100% 4180 (longest request)
Conclusion
Leur serveur répond correctement, on ne ressent aucune latence au niveau de la console, ce qui est vital selon moi. Je ne me vois pas perdre 10 minutes pour installer quelques malheureux paquets. Un dépôt interne est disponible, ce qui nous accélère les mises à jour.
Point intéressant, leur image Debian Wheezy est à jour dès l’installation. Je trouve que cela représente une qualité de travail de la part d’Ikoula. Et ils ont l’air d’attacher de l’importance à la sécurité. D’ailleurs ils tiennent à valider l’identité des propriétaires de leurs serveurs afin d’éviter des utilisations illicites.
Au niveau performance CPU, cela m’a un peu déçu, je m’attendais à mieux pour ce prix. Mais il faut voir comment les ressources sont partagées via Hyper-V. Lancer un stress-test sur des ressources strictement réservées par instance ne donne pas le même résultat que sur un système permettant l’overhead tant que les ressources sont disponibles comme OpenVZ.
Au niveau réseau et I/O rien à redire c’est plus que correcte pour ce prix. La stabilité, la rapidité et le temps de réponse sont au rendez-vous.
Je conclurai par conseiller ce type de serveur pour des applicatifs légers avec traitement de données et stockage comme un serveur web (dans la limite des 40Go proposés).
Un autre point à souligner pour les utilisateurs Windows Server, ils proposent une licence incluse dans leur offre. Cela peut faire une différence.
Laisser un commentaire