Dans le cadre du dossier de comparatif des offres hosting VPS, j’ai testé PlanetHoster. Ils proposent différentes offres. J’ai choisis celle qui est la moins cher et sans info-gérance.

Je tiens à les remercier d’avoir accepté de mettre à ma disposition une machine pour ce test.

PlanetHoster plan 1

Détail de l’offre Medium :

  • Virtualisation : KVM
  • Processeurs : 1 vCore
  • Mémoire : 1Go
  • Espace disque 10 Go (SSD RAID10)
  • ligne : 1000Mbps dont 100Mbps garanti
  • SLA : 99,9%
  • 1IPv4
  • options proposées via leur service : consulter les statistiques, paramétrer les DNS secondaires, modifier le reverse DNS, installer un Rescue MX, lancer un scan de sécurité
  • Prix : 19,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 Groupe Barizco Inc. (185.22.109.12)...
Selecting best server based on latency...
Hosted by MEDIACTIVE NETWORK (Paris) [1.59 km]: 5.171 ms
Testing download speed........................................
Download: 266.57 Mbits/s
Testing upload speed..................................................
Upload: 202.66 Mbits/s

Le débit est impressionnant en trafic sortant : on atteint 33Mo/s en download mais surtout 25Mo/s en upload. La performance réseau est sans doute le point fort de ce type d’offre. On peut imaginer une plateforme d’échange de fichiers, mais il faudrait disposer de plus d’espace disque, ou connecter un backend comme Amazon EC2. La question étant, est-ce une ressource partagée ? Quelle ressource est garantie ? PlanetHoster assure que 100Mbps sont garantis et que le réseaux est en 1000Mbps.

Le temps de réponse du test est vraiment bon, seulement 5,2ms.

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 : 30,8 MB/s (4,5ms)
  • fichier Thinkbroadband UK 1Go : 29 MB/s (10,5ms) (les temps de réponses sont assez fluctuants durant le test)
  • fichier tweak.nl Pays-Bas 1Go : 24 MB/s (16,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       39628251.9 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4839.3 MWIPS (4.9 s, 7 samples)
Execl Throughput                               6023.4 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1063931.5 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          281688.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       3339283.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1869159.8 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 356947.5 lps   (10.0 s, 7 samples)
Process Creation                               5673.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3635.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    712.5 lpm   (60.0 s, 2 samples)
System Call Overhead                        2656592.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   39628251.9   3395.7
Double-Precision Whetstone                       55.0       4839.3    879.9
Execl Throughput                                 43.0       6023.4   1400.8
File Copy 1024 bufsize 2000 maxblocks          3960.0    1063931.5   2686.7
File Copy 256 bufsize 500 maxblocks            1655.0     281688.9   1702.0
File Copy 4096 bufsize 8000 maxblocks          5800.0    3339283.8   5757.4
Pipe Throughput                               12440.0    1869159.8   1502.5
Pipe-based Context Switching                   4000.0     356947.5    892.4
Process Creation                                126.0       5673.4    450.3
Shell Scripts (1 concurrent)                     42.4       3635.3    857.4
Shell Scripts (8 concurrent)                      6.0        712.5   1187.4
System Call Overhead                          15000.0    2656592.3   1771.1
                                                                   ========
System Benchmarks Index Score                                        1490.2

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.

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 records in
100+0 records out
104857600 bytes (105 MB) copied, 6.1173 s, 17.1 MB/s
$ dd if=/dev/urandom of=/dev/null bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 28.7278 s, 18.3 MB/s

On atteint 17,1 Mo/s et le même est fait juste après pour un fichier de 500Mo pour atteindre 18,3 Mo/s. C’est un chiffre tout à fait honorable, c’est plus de 7 fois plus rapide que sur un core i7-2760QM 2,4Ghz. Cela devrait suffire à toutes vos applications, compte tenu du peu d’espace disque de cette offre. PlanetHoster assure qu’on dispose d’un coeur dédié de la machine physique (Dell R720, R920, etc).

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    6m21.558s
user    6m17.396s
sys     0m2.461s

$ time cat 1Gio.dat | gzip > 1Gio.dat.gz
real    0m34.563s
user    0m32.191s
sys     0m2.073s

$ time cat 1Gio.dat | pbzip2 -p2 -9 -c > 1Gio.dat.bz2

real    9m17.323s
user    9m9.242s
sys     0m6.220s

Les performances CPU se ressentent également lors de la compression. Au niveau compression Xz, il est aussi rapide d’un Core i7 (xz n’utilise qu’un seul thread). Pour la compression gzip et bzip on est respectivement à 5,6x et 2,1x plus rapide qu’un i7, ces valeurs sont vraiment très enthousiastes.

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

Removing test files...
root@virtual684653:~# 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:                          24.1414s
    total number of events:              10000
    total time taken by event execution: 24.1406
    per-request statistics:
         min:                                  2.33ms
         avg:                                  2.41ms
         max:                                 22.99ms
         approx.  95 percentile:               2.39ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   24.1406/0.00

Il se défend remarquablement encore une fois : 16 fois plus rapide qu’un babana pi, et 2x moins d’un core i7-2760QM 2,4Ghz (test fait sur 2 threads…). Si le test sur i7 aurait été fait sur un seul threads, on serait sensiblement au même score qu’avec ce VPS.

 

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 dont on dispose et un VPS n’en a pas beaucoup. Ici on dispose de 8,4Go d’espace libre sur les 10Go présent, on va donc faire avec.

$mkdir test
$cd test
$ sysbench --test=fileio --file-total-size=8G prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark

128 files, 65536Kb each, 8192Mb total
Creating files for the test...

$ sysbench --test=fileio --file-total-size=8G --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, 64Mb each
8Gb 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:  2124415 Read, 1416276 Write, 4531968 Other = 8072659 Total
Read 32.416Gb  Written 21.611Gb  Total transferred 54.027Gb  (184.41Mb/sec)
11802.20 Requests/sec executed

Test execution summary:
    total time:                          300.0025s
    total number of events:              3540691
    total time taken by event execution: 85.9520
    per-request statistics:
         min:                                  0.01ms
         avg:                                  0.02ms
         max:                                 31.75ms
         approx.  95 percentile:               0.03ms

Threads fairness:
    events (avg/stddev):           3540691.0000/0.00
    execution time (avg/stddev):   85.9520/0.00

$ sysbench --test=fileio --file-total-size=8G cleanup

Sur la partie I/O rien à dire, on remarque directement que l’on est sur du SSD, on est 114x plus rapide que sur un disque dur USB relié au banana pi. Si vous cherchez un serveur pour héberger une application contenant principalement une base de données moyenne (limite des 10Go d’espace disque) avec beaucoup d’accès concurrents, c’est idéal. L’accès à la DB sera rapide.

Performance mémoire

Niveau performance mémoire, les valeurs importantes sont les 1329018 ops/sec et 1297.87 MB/sec.

$ sysbench --test=memory --memory-total-size=800M runsysbench 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 (1329018.49 ops/sec)

800.00 MB transferred (1297.87 MB/sec)


Test execution summary:
    total time:                          0.6164s
    total number of events:              819200
    total time taken by event execution: 0.4948
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.00ms
         max:                                  0.42ms
         approx.  95 percentile:               0.00ms

Threads fairness:
    events (avg/stddev):           819200.0000/0.00
    execution time (avg/stddev):   0.4948/0.00

Les performances d’accès mémoire sont vraiment très bonnes. Elles sont 2,5x plus rapides que celles d’un core i7 avec DDR3. Concrètement dans le cas d’un VPS disposant d’1Go de RAM, ce critère ne doit pas être pris en compte dans votre choix. Ces performances sont bien plus importantes que celles nécessaires. Toutefois, si vous optez pour une offre disposant de plus de mémoire RAM, cela à un sens.

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
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB) copied, 2.73578 s, 767 MB/s
$ dd if=/root/zero of=/dev/null bs=1M 
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB) copied, 0.725424 s, 2.9 GB/s

On atteint une vitesse très importante : 767 Mo/s en écriture et 2,9 Go/s en lecture (oui vous avez bien lu Go). Cela confirme l’utilité sans conteste de ce type de VPS pour des accès rapides aux données.

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:        localhost
Server Port:            80

Document Path:          /pydio
Document Length:        306 bytes

Concurrency Level:      30
Time taken for tests:   0.417 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      552000 bytes
HTML transferred:       306000 bytes
Requests per second:    2396.16 [#/sec] (mean)
Time per request:       12.520 [ms] (mean)
Time per request:       0.417 [ms] (mean, across all concurrent requests)
Transfer rate:          1291.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.6      1       4
Processing:     3   11   1.0     11      13
Waiting:        1   10   0.9     10      11
Total:          5   12   0.7     12      16

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     12
  75%     12
  80%     12
  90%     12
  95%     12
  98%     13
  99%     13
 100%     16 (longest request)

Les temps de réponse d’Apache sont tout à fait correcte.

Apache distant

Server Software:        Apache/2.2.22
Server Hostname:        185.22.109.12
Server Port:            80

Document Path:          /pydio
Document Length:        314 bytes

Concurrency Level:      30
Time taken for tests:   7.593 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      564000 bytes
HTML transferred:       314000 bytes
Requests per second:    131.71 [#/sec] (mean)
Time per request:       227.780 [ms] (mean)
Time per request:       7.593 [ms] (mean, across all concurrent requests)
Transfer rate:          72.54 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       37   75 237.5     43    3041
Processing:    40  151 372.8     81    2342
Waiting:       40  151 372.7     81    2342
Total:         80  226 440.7    129    3221

Percentage of the requests served within a certain time (ms)
  50%    129
  66%    138
  75%    168
  80%    187
  90%    244
  95%    300
  98%   2323
  99%   2393
 100%   3221 (longest request)

Ces valeurs sont correctes également.

Conclusion

Leur serveur répond correctement, tout est vraiment très fluide, la console ne saccade jamais, ce qui permet de travailler correctement. Un gros bémol est l’image Debian proposée. On dispose d’une version Squeeze non mise à jour, et sans les dépôts LTS. Une version Wheezy serait plus que la bienvenue afin de ne pas devoir faire de dist-upgrade dès le départ. Il n’y a pas de dépôt interne, mais vu le débit réseau fourni, s’est inutile.

Si vous cherchez un serveur pour héberger une application contenant une base de données moyenne (limite des 10Go d’espace disque) avec beaucoup d’accès concurrents, ce serveur est fait pour vous. Vous aurez la rapidité d’accès à la DB et également la rapidité du processeur pour le frontend web ou java. Le service sera accessible sans goulot d’étranglement non plus sur la bande passante interne. Ce VPS est vraiment typé pour ce genre d’application.

Leurs performances sont bonnes, même très bonnes, et le prix s’en ressent. L’infrastructure proposée est plus importante que lors d’autres tests. Mais pour ce prix, je m’attendais franchement à disposer d’une image à jour du système installé. Ou tout du moins disposer d’une version Debian Wheezy, elle est sortie en mi 2013. Ce côté du service est aussi à prendre en compte lors de votre choix d’un VPS.

Les performances CPU sont très bonnes. Au niveau réseau et I/O rien à redire c’est les plus hauts scores jusqu’à présent. La stabilité, la rapidité et le temps de réponse sont au rendez-vous.