Dans le cadre du dossier de comparatif des offres hosting VPS low cost, j’ai testé Firstheberg LP2, tous les détails des tests sont à lire dans la suite.

Firstheberg LP2

Détail de l’offre LP2 :

  • Virtualisation : OpenVZ
  • Processeurs : 2vCore
  • Mémoire : 2Go
  • Espace disque 30 Go
  • ligne : 100Mbps
  • SLA : inconnu
  • 1IPv4
  • Reverse IP (PTX) personnalisable
  • Prix : 1,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 Techcrea Solutions Sarl ()...
Selecting best server based on ping...
Hosted by Orange (Paris) [16.01 km]: 8.98 ms
Testing download speed........................................
Download: 246.07 Mbits/s
Testing upload speed..................................................
Upload: 8.91 Mbits/s

La vitesse en upload n’est pas très importante, et c’est surtout ce paramètre qui me semble intéressant pour du cloud. Lorsque vous téléchargerez un fichier depuis votre cloud sur votre machine, cela ira à une vitesse de 1,12Mo/s… Leur offre de VPS lowcost openvz est surement sur une ligne lowcost également, type ligne pour les privés.

Par contre si vous envoyez régulièrement des backups de votre machine vers ce serveur, vous aurez du 30Mo/s ce qui est largement suffisant, mais il reste à disposer de la fibre chez vous pour envoyer tout ça rapidement.

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 Firstheberg :

  • fichier OVH France 1Go : 7,85 MB/s (7,55ms)
  • fichier Thinkbroadband UK 1Go : 2,01 MB/s (17,9ms)
  • fichier tweak.nl Pays-Bas 1Go : 10,5 MB/s (20,9ms)

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

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

Document Path:          /pydio
Document Length:        332 bytes

Concurrency Level:      30
Time taken for tests:   1.609 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      617000 bytes
HTML transferred:       332000 bytes
Requests per second:    621.50 [#/sec] (mean)
Time per request:       48.270 [ms] (mean)
Time per request:       1.609 [ms] (mean, across all concurrent requests)
Transfer rate:          374.48 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    6   5.7      4      33
Processing:     2   41  70.8     28     500
Waiting:        2   36  69.3     22     493
Total:          4   47  70.3     34     506

Percentage of the requests served within a certain time (ms)
  50%     34
  66%     44
  75%     47
  80%     50
  90%     59
  95%     74
  98%    424
  99%    430
 100%    506 (longest request)

 

Apache distant

 Document Path:          /pydio
Document Length:        332 bytes

Concurrency Level:      30
Time taken for tests:   2.520 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      617000 bytes
HTML transferred:       332000 bytes
Requests per second:    396.78 [#/sec] (mean)
Time per request:       75.609 [ms] (mean)
Time per request:       2.520 [ms] (mean, across all concurrent requests)
Transfer rate:          239.07 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        7   61 225.1      7    1008
Processing:     8   14  10.9     13     239
Waiting:        8   14   8.3     13     214
Total:         15   75 224.8     22    1025

Percentage of the requests served within a certain time (ms)
  50%     22
  66%     25
  75%     25
  80%     26
  90%     30
  95%   1008
  98%   1016
  99%   1018
 100%   1025 (longest request)

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, 8,82025 s, 11,9 MB/s

On atteint 11,9Mo/s et le même est fait juste après pour un fichier de 1Go pour atteindre 7,4 Mo/s.

Pour tester la compression via xz et gzip, il faut tenir en compte de la vitesse du disque également (celui de tests d’ovh : http://ovh.net/files/1Gio.dat) :

$ time cat 1Gio.dat | xz > 1Gio.dat.xz

real    27m43.869s
user    7m20.865s
sys     0m11.315s

$ time cat 1Gio.dat | gzip > 1Gio.dat.gz

real    4m37.277s
user    0m33.141s
sys     0m4.298s

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 2 threads simultanés pour les VPS proposant 2vCores :

# sysbench --test=cpu --num-threads=2 --cpu-max-prime=20000 run

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 2

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          54.7370s
    total number of events:              10000
    total time taken by event execution: 109.4307
    per-request statistics:
         min:                                  2.56ms
         avg:                                 10.94ms
         max:                               2054.98ms
         approx.  95 percentile:              24.82ms

Threads fairness:
    events (avg/stddev):           5000.0000/158.00
    execution time (avg/stddev):   54.7153/0.00

Il se défend très bien, 8 fois plus rapide qu’un babana pi, mais 4x moins d’un core i7-2760QM 2,4Ghz. Et encore le test n’a été fait que 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 va donc partir sur 15Go. Les fichiers seront créés dans le répertoire courant :

$mkdir test
$cd test
$ 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...

$ 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:  180 Read, 120 Write, 350 Other = 650 Total
Read 2.8125Mb  Written 1.875Mb  Total transferred 4.6875Mb  (15.997Kb/sec)
    1.00 Requests/sec executed

Test execution summary:
    total time:                          300.0595s
    total number of events:              300
    total time taken by event execution: 118.0437
    per-request statistics:
         min:                                  0.01ms
         avg:                                393.48ms
         max:                               8726.50ms
         approx.  95 percentile:            1336.48ms

Threads fairness:
    events (avg/stddev):           300.0000/0.00
    execution time (avg/stddev):   118.0437/0.00

En lecture nous avons 2,81Mb et 1,88Mb en écriture (15.997Kb/sec). C’est presque 100x moins d’un disque dur USB relié au banana pi… Il y a clairement des soucis de latence d’I/O sur ce vps et cela impacte tout le système…

Performance mémoire

Niveau performance mémoire, les valeurs importantes sont les ops/sec et 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 (1870894.04 ops/sec)

800.00 MB transferred (1827.04 MB/sec)


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

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

Cela représente 5 fois plus rapide qu’une DDR3 de portable, ce qui est convaincant pour le prix, mais il faut tenir en tête qu’avec OpenVZ, il s’agit du même accès mémoire pour toutes les machines virtuelles.

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, car je ne sais le vider dans un container OpenVZ :

$ dd if=/dev/zero of=zero bs=1M count=2000
2000+0 enregistrements lus
2000+0 enregistrements écrits
2097152000 octets (2,1 GB) copiés, 52,6057 s, 39,9 MB/s
$ dd if=zero of=/dev/null bs=1M 
2000+0 enregistrements lus
2000+0 enregistrements écrits
2097152000 octets (2,1 GB) copiés, 103,634 s, 20,2 MB/s

On atteint 40Mo/s en écriture et 20 Mo/s en lecture, ce qui dépend surement de la charge globale du serveur.

Conclusion

FirstHeberg propose des VPS à bas prix, mais à basses performances également. Cela permet d’avoir un petit serveur pour faire ses sauvegardes de données, serveur VPN, serveur socks, etc. Mettre un pydio ou owncloud là dessus, cela devient limite.

Je ne le conseille pas pour bricoler à moindre coup, car les commandes sont lentes, un apt-get install prend du temps, beaucoup trop de temps. A côté de cela un Banana PI ou Raspberry PI est plus réactif en console…

Niveau processeur, c’est un double banana pi en résumé. Par contre la génération aléatoire à un taux très intéressant, mais les usages ne sont pas nombreux…