¿Cómo mido el rendimiento de un servidor virtual?

11

Tengo un VPS con Ubuntu. Al ser un servidor virtual, entiendo que comparte recursos con un número desconocido de otros servidores, y me doy cuenta de que es considerablemente más lento que mi máquina de escritorio.

¿Existe alguna herramienta para medir el rendimiento de la máquina virtual ? Sería curioso ver alguna medida aproximada similar a bogomips, posiblemente para CPU (operaciones / seg), memoria y velocidad de lectura / escritura del disco. Me gustaría poder comparar esos números con mi máquina de escritorio.

No estoy interesado en las especificaciones de la máquina física real en la que se ejecuta mi VPS; al hacerlo cat /proc/cpuinfo, puedo ver que es una buena máquina Xeon de cuatro núcleos, pero no me importa. Básicamente, estoy interesado en qué tan rápido se ejecutaría un programa en mi VPS: cuántas operaciones de CPU puede realizar en un segundo, cuántos bytes escribir en la RAM o en el disco.

Solo tengo acceso ssh a la máquina, por lo que la herramienta debe ser de línea de comandos.

Podría escribir un script que, por ejemplo, haga algunos cálculos en un bucle por un segundo y cuente cuántos bucles pudo hacer, o algo similar para medir el rendimiento del disco y la RAM. Pero estoy seguro de que algo como esto ya existe.

Sergey
fuente

Respuestas:

14

Bueno, ya que nadie quiere responder ... :)

Al buscar "bench" en Synaptic se encuentran muchas suites de benchmarking capaces de probar diferentes aspectos de una máquina. Lo único que escuché anteriormente es phoronix-test-suiteque estoy seguro de que es muy completo, aunque mi breve capacidad de atención no me permitió descubrir cómo usarlo.

Luego encontré UnixBench , que se describe como

UnixBench es el conjunto de pruebas BYTE UNIX original, actualizado y revisado por muchas personas a lo largo de los años.

El propósito de UnixBench es proporcionar un indicador básico del rendimiento de un sistema similar a Unix; ... Estos resultados de la prueba se comparan luego con los puntajes de un sistema de referencia para producir un valor de índice, que generalmente es más fácil de manejar que los puntajes brutos.

Se manejan sistemas con múltiples CPU. ... Las pruebas comparan los sistemas Unix comparando sus resultados con un conjunto de puntajes establecidos al ejecutar el código en un sistema de referencia, que es una SPARCstation 20-61 (con una calificación de 10.0).

UnixBench es mencionado por Linode como una herramienta para pruebas de rendimiento de VM en esta publicación de blog :

Usando hardware idéntico, KVM Linodes son mucho más rápidos en comparación con Xen. Por ejemplo, en nuestras pruebas de UnixBench, un KVM Linode obtuvo un puntaje 3 veces mejor que un Xen Linode.

El conjunto de pruebas NO está en los repositorios de Ubuntu, pero es trivial descargarlo y compilarlo:

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

Las pruebas tardan un tiempo en terminar. La salida se ve como

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

Lo que significa que el VPS en cuestión tiene un puntaje de 249.7 para una sola tarea y 592.5 para el procesamiento en paralelo.

Mi máquina de escritorio, aunque tenía especificaciones similares o inferiores a la máquina física en la que se ejecuta mi VPS, produjo un puntaje de 1409.7 para una sola tarea y 5156.3 para el procesamiento en paralelo. Exactamente el tipo de métrica que estaba buscando.

Otra métrica importante es la velocidad de la red. Encontré un script que descarga archivos de prueba desde diferentes ubicaciones y mide la velocidad de descarga. El script se puede ejecutar con

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

(aunque probablemente sería más seguro descargar el script e inspeccionar su contenido antes de ejecutarlo)

Para monitorear la latencia de E / S del disco hay una iopingutilidad que se puede instalar desde los repositorios de 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
fuente
UnixBench ahora está en Github: github.com/kdlucas/byte-unixbench
m0j0
@ m0j0: modifiqué la respuesta para reflejar que ahora está alojada en GitHub, gracias
Sergey
Estos 2 comandos wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zippodrían ser reemplazados por just git clone https://github.com/kdlucas/byte-unixbench.
Hola Ángel, el
0

Eso puede no ser posible. No está proporcionando ningún detalle, por lo que nadie puede proporcionar respuestas específicas. Pero no todos los VPS significan hardware virtual. Tiene todo tipo de soluciones diferentes, como Linux Containers (LXC), que es radicalmente diferente de alquilar una máquina virtual con ciertos detalles.

El único punto de compartir hardware es reutilizarlo. En su caso, incluso si está utilizando hardware virtualizado, no puede estar seguro de que es el único que lo utiliza. Si necesita información sobre la utilización del hardware, debería obtener un servidor físico ubicado en su lugar.

Jo-Erlend Schinstad
fuente
Ahh, creo que me entendiste mal, no estoy hablando de la máquina física subyacente. He actualizado mi pregunta.
Sergey
Sí, pero aun así. Es posible que la computadora no sea la misma de un momento a otro, por lo que cualquier promedio es inútil. En un momento, puede tener 16 núcleos de CPU y 32 GB de RAM y en el otro, 1 núcleo y 512 MB de RAM. El promedio puede ser extremadamente pobre o mejor de lo teóricamente posible, dependiendo de cuándo calcule. Puede obtener algunos datos de "ps ax", "top", "iotop" y "uptime", pero no valdrá mucho.
Jo-Erlend Schinstad
2
Ok, un ejemplo: comprimo un archivo de 1Gb en mi netbook y mido el tiempo que lleva realizar la tarea. Luego gzip el mismo archivo en mi escritorio, resulta que mi escritorio lo hace 3 veces más rápido que el netbook, así que les doy una "calificación gzip" de 100 y 300, respectivamente. Luego comprimo el mismo archivo en el VPS y encuentro, por ejemplo, que en el momento de la prueba es 1.5 veces más rápido que el netbook pero aún 2 veces más lento que el escritorio, por lo que es un "factor gzip" de 150. Puedo idear algo como esto yo mismo, pero seguramente medir el rendimiento es un problema común
Sergey
Medir el rendimiento está bien, siempre y cuando sepas qué computadora estás midiendo. Con un VPS, no necesariamente lo sabes. Puede moverse entre muchas computadoras completamente diferentes sin su conocimiento, se pueden agregar y quitar procesadores, agregar y quitar RAM, etc. O otro VPS comienza a usar mucha CPU durante 25 segundos, haciendo que su VPS sea más lento. Hay demasiadas variables.
Jo-Erlend Schinstad
Parece que puede haber un nicho para una herramienta de monitor de rendimiento vps.
justingrif