Como medir o desempenho de um servidor virtual?

10

Eu tenho um VPS rodando Ubuntu. Sendo um servidor virtual, eu entendo que ele compartilha recursos com um número desconhecido de outros servidores, e estou percebendo que ele é consideravelmente mais lento do que a minha máquina desktop.

Existe alguma ferramenta para medir o desempenho da máquina virtual ? Eu ficaria curioso para ver alguma medida aproximada semelhante a bogomips, possivelmente para CPU (operações / seg), memória e velocidade de leitura / gravação de disco. Eu gostaria de poder comparar esses números com a minha máquina desktop.

Não estou interessado nas especificações da máquina física real em que o meu VPS está sendo executado - fazendo cat /proc/cpuinfo . Posso ver que é uma boa máquina Xeon quad-core, mas isso não me importa. Estou basicamente interessado em quão rápido um programa seria executado em meu VPS - quantas operações de CPU ele pode fazer em um segundo, quantos bytes para gravar na RAM ou no disco.

Eu só tenho acesso ssh à máquina para que a ferramenta precise ser linha de comando.

Eu poderia escrever um script que, digamos, faça alguns cálculos em um loop por um segundo e conte quantos loops ele conseguiu fazer, ou algo semelhante para medir o desempenho do disco e da RAM. Mas tenho certeza que algo assim já existe.

    
por Sergey 07.03.2012 / 05:29

2 respostas

13

Bem, já que ninguém quer responder ...:)

Pesquisando o Synaptic para "bench" encontra muitos conjuntos de benchmarking capazes de testar diferentes aspectos de uma máquina. O único sobre o qual eu ouvi falar anteriormente é phoronix-test-suite , o que eu tenho certeza que é muito abrangente, apesar de meu curto período de atenção não me permitir descobrir como usá-lo.

Então eu encontrei UnixBench , que é descrito como

  

O UnixBench é o pacote de benchmark BYTE UNIX original, atualizado e   revisado por muitas pessoas ao longo dos anos.

     

O propósito do UnixBench é fornecer um indicador básico do   desempenho de um sistema semelhante ao Unix; ... Estes resultados de testes   são então comparados com as pontuações de um sistema de referência para produzir um   valor do índice, que geralmente é mais fácil de manipular do que as pontuações brutas.

     

Sistemas multi-CPU são manipulados. ... Os testes comparam sistemas Unix por   comparando seus resultados a um conjunto de pontuações definidas executando o código em   um sistema de referência, que é um SPARCstation 20-61 (avaliado em 10,0).

O UnixBench é mencionado pelo Linode como uma ferramenta para testes de desempenho de VMs em esta postagem do blog :

  

Usando hardware idêntico, os KVM Linodes são muito mais rápidos em comparação com o Xen.   Por exemplo, no nosso teste UnixBench, um KVM Linode marcou 3x melhor   do que um Linen Xen.

O conjunto de testes NÃO está nos repositórios do Ubuntu, mas é trivial fazer o download e compilá-lo:

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

Os testes demoram um pouco para terminar. A saída parece

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

O que significa que o VPS em questão tem uma pontuação de 249,7 para tarefa única e 592.5 para processamento paralelo.

Minha máquina desktop, apesar de ter especificações semelhantes ou inferiores à máquina física em que meu VPS está sendo executado, produziu uma pontuação 1409.7 para tarefa única e 5156.3 para processamento paralelo . Exatamente o tipo de métrica que eu estava procurando.

Outra métrica importante é a velocidade da rede. Eu encontrei um script que baixa arquivos de teste de diferentes locais e mede a velocidade de download. O script pode ser executado com

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

(embora seja mais seguro baixar o script e inspecionar seu conteúdo antes de executá-lo)

Para monitorar a latência de I / O do disco, existe o utilitário ioping , que pode ser instalado a partir dos repositórios do 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
...
    
por Sergey 16.10.2012 / 07:01
0

Isso pode não ser possível. Você não está fornecendo detalhes, então ninguém pode fornecer respostas específicas. Mas nem todos os VPSs significam hardware virtual. Você tem todos os tipos de soluções diferentes, como o Linux Containers (LXC), que é radicalmente diferente de dividir uma máquina virtual com determinados detalhes.

O único ponto de compartilhamento de hardware é reutilizá-lo. No seu caso, mesmo se você estiver usando hardware virtualizado, não pode ter certeza de que é o único a usá-lo. Se você precisar de informações sobre a utilização de hardware, deverá obter um servidor físico co-localizado.

    
por Jo-Erlend Schinstad 07.03.2012 / 05:43