Como faço para medir o desempenho de um servidor virtual?

11

Eu tenho um VPS executando o Ubuntu. Sendo um servidor virtual, entendo que ele compartilha recursos com um número desconhecido de outros servidores, e percebo que é consideravelmente mais lento que minha máquina de desktop.

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

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

Eu só tenho acesso ssh à máquina, portanto a ferramenta precisa ser de linha de comando.

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

Sergey
fonte

Respostas:

14

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

A busca por "bench" na Synaptic encontra muitos conjuntos de benchmarking capazes de testar diferentes aspectos de uma máquina. O único sobre o qual ouvi falar anteriormente é phoronix-test-suiteque, com certeza, é muito abrangente, embora meu curto tempo de atenção não tenha me permitido descobrir como usá-lo.

Então eu encontrei o UnixBench , que é descrito como

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

O objetivo do UnixBench é fornecer um indicador básico do desempenho de um sistema semelhante ao Unix; ... Esses resultados de teste são então comparados às pontuações de um sistema de linha de base para produzir um valor de índice, geralmente mais fácil de manusear do que as pontuações brutas.

Os sistemas com várias CPUs são manipulados. ... Os testes comparam os sistemas Unix comparando seus resultados com um conjunto de pontuações executando o código em um sistema de benchmark, que é um SPARCstation 20-61 (avaliado em 10.0).

O UnixBench é mencionado pelo Linode como uma ferramenta para teste de desempenho de VM nesta postagem do blog :

Usando hardware idêntico, o KVM Linodes é muito mais rápido comparado ao Xen. Por exemplo, em nosso teste do UnixBench, um KVM Linode obteve 3x melhor que um Xen Linode.

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 de mesa, apesar de ter especificações semelhantes ou inferiores à máquina física em que o VPS está sendo executado, produziu uma pontuação de 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. 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 provavelmente seja mais seguro fazer o download do script e inspecionar seu conteúdo antes da execução)

Para monitorar a latência de E / S do disco, existe um iopingutilitário que pode ser instalado nos 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
...
Sergey
fonte
O UnixBench agora está no Github: github.com/kdlucas/byte-unixbench
m0j0
@ m0j0: Eu modificou a resposta para refletir que ele está hospedado no GitHub agora, graças
Sergey
Esses 2 comandos wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zippodem ser substituídos por apenas git clone https://github.com/kdlucas/byte-unixbench.
Hi-Angel
0

Isso pode não ser possível. Você não está fornecendo detalhes, para que ninguém possa 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 renderizar uma máquina virtual com determinadas especificidades.

O único ponto de compartilhar 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.

Jo-Erlend Schinstad
fonte
Ahh, acho que você me entendeu errado - não estou falando da máquina física subjacente. Eu atualizei minha pergunta.
Sergey
Sim, mas ainda. O computador pode não ser o mesmo de um momento para o outro, portanto, qualquer média é inútil. Em um momento, ele pode ter 16 núcleos de CPU e 32 GB de RAM e, no outro, 1 núcleo e 512 MB de RAM. A média pode ser extremamente ruim ou melhor do que teoricamente possível, dependendo de quando você calcula. Você pode obter alguns dados de "ps ax", "top", "iotop" e "uptime", mas não valerá muito.
Jo-Erlend Schinstad
2
Ok, um exemplo: descompacte um arquivo de 1 GB no meu netbook e avalio o tempo necessário para executar a tarefa. Em seguida, compacto o mesmo arquivo na minha área de trabalho - acontece que minha área de trabalho é três vezes mais rápida que o netbook, então dou a eles uma "classificação de gzip" de 100 e 300, respectivamente. Em seguida, comprimo o mesmo arquivo no VPS e percebo, por exemplo, que no momento do teste ele é 1,5 vezes mais rápido que o netbook, mas ainda 2 vezes mais lento que o desktop - por isso é um "fator de gzip" de 150. Posso imaginar algo como isso mesmo, mas certamente medir o desempenho é um problema comum
Sergey
Avaliar o desempenho é bom, desde que você saiba qual computador está medindo. Com um VPS, você não necessariamente sabe disso. Ele pode ser movido entre vários computadores completamente diferentes sem o seu conhecimento, os processadores podem ser adicionados e removidos, a RAM adicionada e removida, etc. Ou outro VPS começa a usar muita CPU por 25 segundos, tornando seu VPS mais lento. Existem muitas variáveis.
Jo-Erlend Schinstad
Parece que pode haver um nicho para uma ferramenta de monitor de desempenho vps.
23812 just justrrif