Come misuro le prestazioni di un server virtuale?


11

Ho un VPS con Ubuntu. Essendo un server virtuale, capisco che condivide risorse con un numero sconosciuto di altri server e sto notando che è notevolmente più lento della mia macchina desktop.

Esiste uno strumento per misurare le prestazioni della macchina virtuale ? Sarei curioso di vedere una misura approssimativa simile ai bogomips, possibilmente per CPU (operazioni / sec), memoria e velocità di lettura / scrittura del disco. Mi piacerebbe poter confrontare questi numeri con la mia macchina desktop.

Non mi interessano le specifiche dell'attuale macchina fisica su cui è in esecuzione il mio VPS - cat /proc/cpuinfovedendo che è una bella macchina Xeon quad-core, ma per me non importa. Sono sostanzialmente interessato alla velocità con cui un programma verrebbe eseguito nel mio VPS - quante operazioni della CPU può fare in un secondo, quanti byte scrivere sulla RAM o sul disco.

Ho solo l'accesso ssh alla macchina, quindi lo strumento deve essere a riga di comando.

Potrei scrivere uno script che, per esempio, esegue alcuni calcoli in un ciclo per un secondo e conta quanti loop è stato in grado di fare o qualcosa di simile per misurare le prestazioni del disco e della RAM. Ma sono sicuro che qualcosa del genere esiste già.

Risposte:


14

Bene, dal momento che nessuno vuole rispondere ... :)

La ricerca di "Bench" in Synaptic trova molte suite di benchmarking in grado di testare diversi aspetti di una macchina. L'unico di cui ho sentito parlare in precedenza è phoronix-test-suite, che sono sicuro è molto completo, anche se la mia breve attenzione non mi ha permesso di capire come usarlo.

Poi ho trovato UnixBench , che è descritto come

UnixBench è la suite di benchmark BYTE UNIX originale, aggiornata e rivista da molte persone nel corso degli anni.

Lo scopo di UnixBench è di fornire un indicatore di base delle prestazioni di un sistema simile a Unix; ... Questi risultati dei test vengono quindi confrontati con i punteggi di un sistema di base per produrre un valore di indice, che è generalmente più facile da gestire rispetto ai punteggi grezzi.

Vengono gestiti sistemi multi-CPU. ... I test confrontano i sistemi Unix confrontando i loro risultati con una serie di punteggi impostati eseguendo il codice su un sistema di riferimento, che è una SPARCstation 20-61 (valutata a 10.0).

UnixBench è menzionato da Linode come strumento per il test delle prestazioni della VM in questo post del blog :

Utilizzando un hardware identico, i linodi KVM sono molto più veloci rispetto a Xen. Ad esempio, nei nostri test UnixBench un Linode KVM ha ottenuto un punteggio 3 volte migliore di un Linode Xen.

La suite di test NON si trova nei repository Ubuntu, ma è banale scaricarla e compilarla:

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

I test impiegano un po 'di tempo per finire. L'output è simile

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

Ciò significa che il VPS in questione ha un punteggio di 249,7 per singola attività e 592,5 per l'elaborazione parallela.

La mia macchina desktop, pur avendo specifiche simili o inferiori alla macchina fisica su cui è in esecuzione il mio VPS, ha prodotto un punteggio di 1409,7 per singola attività e 5156,3 per l'elaborazione parallela. Esattamente il tipo di metrica che stavo cercando.

Un'altra metrica importante è la velocità della rete. Ho trovato uno script che scarica file di test da diverse posizioni e misura la velocità di download. Lo script può essere eseguito con

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

(anche se probabilmente sarebbe più sicuro scaricare lo script e controllarne il contenuto prima di eseguirlo)

Per monitorare la latenza dell'I / O del disco è disponibile iopingun'utilità che può essere installata dai repository 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
...

UnixBench è ora su Github: github.com/kdlucas/byte-unixbench
m0j0

@ m0j0: ho modificato la risposta per riflettere che ora è ospitato su GitHub, grazie
Sergey

Questi 2 comandi wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zippotrebbero essere sostituiti con just git clone https://github.com/kdlucas/byte-unixbench.
Ciao Angelo

0

Questo potrebbe non essere possibile. Non stai fornendo alcun dettaglio, quindi nessuno può fornire risposte specifiche. Ma non tutti i VPS significano hardware virtuale. Hai tutti i tipi di soluzioni diverse, come Linux Containers (LXC) che è radicalmente diverso dal rendering di una macchina virtuale con determinate specifiche.

L'unico punto di condivisione dell'hardware è riutilizzarlo. Nel tuo caso, anche se stai utilizzando hardware virtualizzato, non puoi essere certo di essere l'unico a usarlo. Se hai bisogno di informazioni sull'utilizzo dell'hardware, dovresti invece ottenere un server fisico condiviso.


Ahh, penso che tu mi abbia capito male - non sto parlando della macchina fisica sottostante. Ho aggiornato la mia domanda.
Sergey

Sì, ma comunque. Il computer potrebbe non essere lo stesso da un momento all'altro, quindi qualsiasi media è inutile. In un momento, potrebbe avere 16 core CPU e 32 GB di RAM e nell'altro 1 core e 512 MB di RAM. La media potrebbe essere estremamente scarsa o migliore di quanto teoricamente possibile, a seconda di quando si calcola. Puoi ottenere alcuni dati da "ps ax", "top", "iotop" e "uptime", ma non varrà molto.
Jo-Erlend Schinstad

2
Ok, un esempio: gzip un file da 1 GB sul mio netbook e misuro il tempo necessario per eseguire l'attività. Quindi gzip lo stesso file sul mio desktop - scopre che il mio desktop lo fa 3 volte più velocemente del netbook, quindi do loro una "valutazione gzip" rispettivamente di 100 e 300. Quindi comprimo lo stesso file sul VPS e trovo, diciamo, che al momento del test sia 1,5 volte più veloce del netbook ma ancora 2 volte più lento del desktop - quindi è "fattore gzip" di 150. Posso escogitare qualcosa del genere da solo, ma sicuramente misurare le prestazioni è un problema comune
Sergey

La misurazione delle prestazioni va bene, purché tu sappia quale computer stai misurando. Con un VPS, non lo sai necessariamente. Potrebbe essere spostato tra molti computer completamente diversi a tua insaputa, i processori potrebbero essere aggiunti e rimossi, la RAM aggiunta e rimossa, ecc. O un altro VPS inizia a utilizzare molta CPU per 25 secondi, rendendo il tuo VPS più lento. Ci sono troppe variabili.
Jo-Erlend Schinstad

Sembra che ci possa essere una nicchia per uno strumento di monitoraggio delle prestazioni vps.
justingrif
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.