web-dev-qa-db-fra.com

Comment mesurer les performances d'un serveur virtuel?

J'ai un VPS sous Ubuntu. En tant que serveur virtuel, je comprends qu'il partage des ressources avec un nombre inconnu d'autres serveurs et je remarque qu'il est considérablement plus lent que mon ordinateur de bureau.

Existe-t-il un outil permettant de mesurer les performances de la machine virtuelle? Je serais curieux de voir une mesure approximative similaire à bogomips, éventuellement pour le processeur (opérations/s), la mémoire et la vitesse de lecture/écriture du disque. J'aimerais pouvoir comparer ces chiffres à mon ordinateur de bureau.

Je ne m'intéresse pas aux spécifications de la machine physique sur laquelle mon VPS fonctionne - en faisant cat /proc/cpuinfo je peux voir que c'est une belle machine Xeon à quatre cœurs, mais peu importe pour moi. Je suis fondamentalement intéressé par la vitesse d'exécution d'un programme dans mon VPS - le nombre d'opérations de processeur qu'il peut effectuer en une seconde, le nombre d'octets à écrire sur RAM ou sur le disque.

Je n'ai qu'un accès ssh à la machine, donc l'outil doit être en ligne de commande.

Je pourrais écrire un script qui, par exemple, effectue des calculs dans une boucle pendant une seconde et compte le nombre de boucles qu'il a été capable de faire, ou quelque chose de similaire pour mesurer les performances du disque et RAM. Mais je suis sûr que quelque chose comme ça existe déjà.

11
Sergey

Eh bien, puisque personne ne veut répondre ... :)

En recherchant "bench" dans Synaptic, on trouve un grand nombre de suites d'analyse permettant de tester différents aspects d'une machine. Le seul sujet dont j'ai entendu parler auparavant est phoronix-test-suite, qui, j'en suis sûr, est très complet, bien que ma courte durée d'attention ne me permette pas de comprendre comment l'utiliser.

Puis j'ai trouvé nixBench , qui est décrit comme

UnixBench est la suite de tests BYTE UNIX d'origine, mise à jour et révisée par de nombreuses personnes au fil des ans.

UnixBench a pour objectif de fournir un indicateur de base des performances d’un système de type Unix; ... Ces résultats de test sont ensuite comparés aux scores d'un système de base pour produire une valeur d'index, qui est généralement plus facile à gérer que les scores bruts.

Les systèmes multi-processeurs sont gérés. ... Les tests comparent les systèmes Unix en comparant leurs résultats à un ensemble de scores en exécutant le code sur un système de référence, qui est une SPARCstation 20-61 (évaluée à 10,0).

UnixBench est mentionné par Linode comme un outil pour VM tester les performances de cet article de blog :

En utilisant un matériel identique, KVM, les linodes sont beaucoup plus rapides que Xen. Par exemple, dans notre test UnixBench, un KVM Linode a obtenu un résultat 3 fois supérieur à un Linode Xen.

La suite de tests ne se trouve pas dans les dépôts Ubuntu, mais il est facile de la télécharger et de la compiler:

wget https://github.com/kdlucas/byte-unixbench/archive/master.Zip
unzip ./master.Zip
cd ./byte-unixbench-master/UnixBench
./Run

Les tests prennent un certain temps pour finir. La sortie ressemble à

------------------------------------------------------------------------
Benchmark Run: Mon Oct 15 2012 23:55:22 - 00:23:16
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       12015218.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2214.8 MWIPS (10.1 s, 7 samples)
Execl Throughput                                896.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         58968.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           14578.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        422068.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                               70993.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  16001.5 lps   (10.0 s, 7 samples)
Process Creation                               1861.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2525.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    737.8 lpm   (60.1 s, 2 samples)
System Call Overhead                         432496.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12015218.4   1029.6
Double-Precision Whetstone                       55.0       2214.8    402.7
Execl Throughput                                 43.0        896.9    208.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      58968.3    148.9
File Copy 256 bufsize 500 maxblocks            1655.0      14578.6     88.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     422068.2    727.7
Pipe Throughput                               12440.0      70993.3     57.1
Pipe-based Context Switching                   4000.0      16001.5     40.0
Process Creation                                126.0       1861.8    147.8
Shell Scripts (1 concurrent)                     42.4       2525.5    595.6
Shell Scripts (8 concurrent)                      6.0        737.8   1229.7
System Call Overhead                          15000.0     432496.2    288.3
                                                                   ========
System Benchmarks Index Score                                         249.7

------------------------------------------------------------------------
Benchmark Run: Tue Oct 16 2012 00:23:16 - 00:51:20
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       42619039.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     8274.0 MWIPS (10.4 s, 7 samples)
Execl Throughput                               3398.5 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         68332.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           21462.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        718205.6 KBps  (30.0 s, 2 samples)
Pipe Throughput                              149713.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  61968.3 lps   (10.0 s, 7 samples)
Process Creation                               5321.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5957.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    812.6 lpm   (60.1 s, 2 samples)
System Call Overhead                        1557391.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   42619039.2   3652.0
Double-Precision Whetstone                       55.0       8274.0   1504.4
Execl Throughput                                 43.0       3398.5    790.4
File Copy 1024 bufsize 2000 maxblocks          3960.0      68332.4    172.6
File Copy 256 bufsize 500 maxblocks            1655.0      21462.9    129.7
File Copy 4096 bufsize 8000 maxblocks          5800.0     718205.6   1238.3
Pipe Throughput                               12440.0     149713.5    120.3
Pipe-based Context Switching                   4000.0      61968.3    154.9
Process Creation                                126.0       5321.7    422.4
Shell Scripts (1 concurrent)                     42.4       5957.1   1405.0
Shell Scripts (8 concurrent)                      6.0        812.6   1354.3
System Call Overhead                          15000.0    1557391.5   1038.3
                                                                   ========
System Benchmarks Index Score                                         592.5

Ce qui signifie que le VPS en question a un score de 249,7 pour une tâche unique et 592,5 pour le traitement en parallèle.

Mon ordinateur de bureau, tout en ayant des spécifications similaires ou inférieures à la machine physique sur laquelle mon VPS est exécuté, a généré un score de 1409.7 pour une tâche unique et 5156.3 pour le traitement en parallèle. Exactement le type de métrique que je cherchais.

Une autre mesure importante est la vitesse du réseau. J'ai trouvé un script qui télécharge des fichiers de test depuis différents emplacements et mesure la vitesse de téléchargement. Le script peut être exécuté avec

wget freevps.us/downloads/bench.sh -O - -o /dev/null|bash

(bien qu'il serait probablement plus sûr de télécharger le script et d'inspecter son contenu avant de l'exécuter)

Pour contrôler la latence des E/S du disque, un utilitaire ioping peut être installé à partir de référentiels Ubuntu:

# ioping . -c 10
4096 bytes from . (ext4 /dev/disk/...): request=1 time=16.4 ms
4096 bytes from . (ext4 /dev/disk/...): request=2 time=16.1 ms
...
14
Sergey

Cela peut ne pas être possible. Vous ne fournissez aucun détail, personne ne peut donc fournir de réponses précises. Mais tous les VPS ne signifient pas du matériel virtuel. Vous avez toutes sortes de solutions différentes, comme les conteneurs Linux (LXC), ce qui est radicalement différent du rendu d'une machine virtuelle avec certaines spécificités.

Le seul point de partage du matériel est de le réutiliser. Dans votre cas, même si vous utilisez du matériel virtualisé, vous ne pouvez pas être sûr d'être le seul à l'utiliser. Si vous avez besoin d'informations sur l'utilisation du matériel, vous devriez plutôt vous procurer un serveur physique colocalisé.

0