Comment mesurer les performances d'un serveur virtuel?

11

J'ai un VPS exécutant Ubuntu. Étant un 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 ma machine de bureau.

Existe-t-il un outil pour mesurer les performances de la machine virtuelle ? Je serais curieux de voir une mesure approximative similaire aux bogomips, peut-être pour le CPU (opérations / sec), la mémoire et la vitesse de lecture / écriture du disque. J'aimerais pouvoir comparer ces chiffres à ma machine de bureau.

Je ne suis pas intéressé par les spécifications de la machine physique sur laquelle mon VPS fonctionne - en faisant, cat /proc/cpuinfoje peux voir que c'est une belle machine Xeon quadricœur, mais cela n'a pas d'importance pour moi. Je m'intéresse essentiellement à la vitesse à laquelle un programme s'exécuterait dans mon VPS - combien d'opérations CPU il peut faire en une seconde, combien d'octets pour écrire sur la 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 pu faire, ou quelque chose de similaire pour mesurer les performances du disque et de la RAM. Mais je suis sûr que quelque chose comme ça existe déjà.

Sergey
la source

Réponses:

14

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

La recherche de «banc» dans Synaptic trouve de nombreuses suites d'analyse comparative capables de tester différents aspects d'une machine. Le seul dont j'ai entendu parler précédemment est phoronix-test-suite, ce qui, j'en suis sûr, est très complet, même si ma courte durée d'attention ne m'a pas permis de comprendre comment l'utiliser.

Ensuite, j'ai trouvé UnixBench , qui est décrit comme

UnixBench est la suite de référence BYTE UNIX originale, mise à jour et révisée par de nombreuses personnes au fil des ans.

Le but d'UnixBench est 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-CPU sont gérés. ... Les tests comparent les systèmes Unix en comparant leurs résultats à un ensemble de scores défini en exécutant le code sur un système de référence, qui est un SPARCstation 20-61 (évalué à 10,0).

UnixBench est mentionné par Linode comme un outil pour tester les performances des VM dans ce blog :

En utilisant un matériel identique, KVM Linodes sont beaucoup plus rapides par rapport à Xen. Par exemple, dans notre UnixBench tester un KVM Linode marqué 3x mieux qu'un Xen Linode.

La suite de tests n'est PAS dans les référentiels Ubuntu, mais il est trivial 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 terminer. 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 tâche unique et 592,5 pour le traitement parallèle.

Ma machine de bureau, tout en ayant des spécifications similaires ou inférieures à la machine physique mon VPS est en cours d' exécution sur, a produit un score de 1409,7 pour tâche unique et 5156,3 pour le traitement parallèle. Exactement le genre de mesure 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 à partir de 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 surveiller la latence des E / S disque, il existe un iopingutilitaire qui peut être installé à partir des 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
...
Sergey
la source
UnixBench est maintenant sur Github: github.com/kdlucas/byte-unixbench
m0j0
@ m0j0: J'ai modifié la réponse pour refléter qu'elle est hébergée sur GitHub maintenant, merci
Sergey
Ces 2 commandes wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zippourraient être remplacées par justes git clone https://github.com/kdlucas/byte-unixbench.
Hi-Angel
0

Ce n'est peut-être pas possible. Vous ne fournissez aucun détail, donc personne ne peut fournir de réponses spécifiques. Mais tous les VPS ne signifient pas du matériel virtuel. Vous avez toutes sortes de solutions différentes, comme les conteneurs Linux (LXC), qui sont radicalement différents 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 certain que vous êtes le seul à l'utiliser. Si vous avez besoin d'informations sur l'utilisation du matériel, vous devriez plutôt obtenir un serveur physique colocalisé.

Jo-Erlend Schinstad
la source
Ahh, je pense que vous m'avez mal compris - je ne parle pas de la machine physique sous-jacente. J'ai mis à jour ma question.
Sergey
Oui, mais quand même. L'ordinateur peut ne pas être le même d'un moment à l'autre, donc toute moyenne est inutile. À un moment donné, il peut avoir 16 cœurs de processeur et 32 ​​Go de RAM et dans l'autre, 1 cœur et 512 Mo de RAM. La moyenne peut être extrêmement mauvaise ou meilleure que ce qui est théoriquement possible, selon le moment où vous calculez. Vous pouvez obtenir des données de "ps ax", "top", "iotop" et "uptime", mais cela ne vaudra pas grand-chose.
Jo-Erlend Schinstad
2
Ok, un exemple: je compresse un fichier 1 Go sur mon netbook et mesure le temps qu'il faut pour effectuer la tâche. Ensuite, je gzip le même fichier sur mon bureau - il s'avère que mon bureau le fait 3 fois plus rapidement que le netbook, donc je leur donne une "cote gzip" de 100 et 300, respectivement. Ensuite, je compresse le même fichier sur le VPS et constate, disons, qu'au moment du test, il est 1,5 fois plus rapide que le netbook mais toujours 2 fois plus lent que le bureau - c'est donc un "facteur gzip" de 150. Je peux imaginer quelque chose comme ça moi-même, mais mesurer les performances est sûrement un problème commun
Sergey
La mesure des performances est correcte, tant que vous savez quel ordinateur vous mesurez. Avec un VPS, vous ne le savez pas nécessairement. Il peut être déplacé entre de nombreux ordinateurs complètement différents à votre insu, des processeurs peuvent être ajoutés et supprimés, de la RAM ajoutée et supprimée, etc. Ou un autre VPS commence à utiliser beaucoup de CPU pendant 25 secondes, ce qui rend votre VPS plus lent. Il y a trop de variables.
Jo-Erlend Schinstad
On dirait qu'il peut y avoir un créneau pour un outil de surveillance des performances vps.
justingrif