Testando a performance de seu sistema com o BYTE UNIX Benchmarks
Colaboração: Thiago Cesar Vieira
Data de Publicação: 05 de fevereiro de 2010
Você é daqueles que esbanja para seus amigos o poder de sua máquina, mas até agora ninguém acreditou?
Quer certificar se a compra de um processador quad-core valeu mesmo a pena?
Ou, se você é apenas curioso mesmo, então esse artigo é para você!
Introdução
Na rede encontramos diversos benchmarks para Linux. Testei alguns e o BYTE UNIX Benchmarks foi o que mais me agradou. É free e fácil de usar, é pequeno (em tamanho em disco) e completo em testes, exibe resultados em formato amigável, tem uma boa documentação, já é uma ferramenta madura e seu desenvolvimento ainda é bem ativo.
O byte-unixbench roda um conjunto de testes para avaliar vários componentes do seus computador: processador, memória, disco rígido, placa de vídeo e como esse hardware todo se comunica através da placa-mãe.
O resultado é apresentado em formato HTML. Veja um exemplo em um dual-core.
Bom, mãos à obra. Muitas das informações que seguem abaixo extraí do arquivo README
.
Compilando o benckmark
O benchmark é disponibilizado no formato código fonte a fim de que criemos binários específicos para a sua plataforma e também para personalizar a forma que rodamos o benchmark.
Após baixá-lo, descompacte-o
$ tar xzvf unixbench-5.1.2.tar.gz unixbench-5.1.2/
Agora é necessário compilar para criar os binários. Caso você não queira executar testes gráficos, edite o Makefile
, comentando a linha "GRAPHIC_TESTS = defined
".
Após isso, dê o build.
$ cd unixbench-5.1.2/ && make
Os binários serão criados no diretório pgms/
.
Caso tenha dificuldades com os testes gráficos, veja a seção "Problemas em compilar os testes gráficos" no final desse artigo.
Rodando o benchmark
O byte-unixbench ainda não disponibiliza uma interface gráfica. Ele deve ser executado através do terminal.
Rode o script Run
para executar os testes de sistema: (aproximadamente 1h)
$ ./Run
Para rodar apenas testes gráficos: (aproximadamente 20min)
$ ./Run graphics
Para executar ambos os testes:
$ ./Run gindex
Os vários testes são executados em sequência.
Conferindo os resultados
Os resultados são disponibilizados na tela de console e no diretório results/
.
Lá encontramos 2 arquivos:
- Um deles em formato texto simples;
- Já o outro, mais amigável, em formato HTML. Abra esse arquivo em um browser para uma análise mais detalhada.
Perceba que no topo são exibidas algumas informações sobre o sistema: sistema operacional, kernel, arquitetura do processador e o(s) processador(es).
Logo a seguir vêm os resultados quando rodando apenas uma instância dos programas de testes, single thread. Acompanha também o resultado dos testes gráficos: 2D e 3D.
Por fim, caso seu processador seja multi-core, exibe os resultados rodando N instâncias (multiple threads), onde N é a quantidade de núcleos.
O que pode afetar os resultados do benchmark?
Além do próprio hardware testado, existem algumas configurações de software que podem interferir nos resultados de um teste de performance. São elas:
- Versão do benchmark. A comparação de resultados entre byte-unixbench 4.X e 5.X não é viável: "It should also be noted that there is a BIG difference between the 5.1.2 and 4.1 WHT version of the benchmark. The 5 version will always show MUCH higher scores than the 4 version";
- Compilador (fabricante, versão). Alguns compiladores criam binários mais otimizados que outros compiladores;
- Sistema operacional e kernel;
- Configurações da BIOS como o "Cool & Quiet": "The Cool & Quiet kills performance on AMD chips. I use AMD's for all my desktop machines and once I disabled Cool & quiet, performance was boosted by a lot";
- Driver de vídeo (caso rode testes gráficos);
- etc.
Da home-page do byte-unixbench:
Do be aware that this is a system benchmark, not a CPU, RAM or disk benchmark. The results will depend not only on your hardware, but on your operating system, libraries, and even compiler.
Referências
- Benchmark (computing) -- Wikipedia
- byte-unixbench home-page
- Resultados, principalmente da muuuito antiga versão 4.1. Pena que está desorganizado. Cada um postou seu resultado e ninguém juntou a informação. Veja esse aqui como é super-bem organizado.
- VPS vs. Dedicated - New Benchmark Results
- Lista de outros benchmarks para Linux
Problemas em compilar os testes gráficos
Tive alguns problemas ao criar os binários para rodar os testes gráficos.
Ao tentar compilar...
$ make ./src/ubgears.c:51:19: error: GL/gl.h: No such file or directory ./src/ubgears.c:52:20: error: GL/glx.h: No such file or directory ./src/ubgears.c:129: error: expected = , , , ; , asm or __attribute__ before view_rotx ... make: *** [pgms/ubgears] Error 1
Precisei instalar o pacote do OpenGL (biblioteca gráfica)
# apt-get install mesa-common-dev
Tentando novamente compilar...
$ make ... gcc -o ./pgms/ubgears -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/ubgears.c -lGL -lXext -lX11 /usr/bin/ld: cannot find -lGL collect2: ld returned 1 exit status make: *** [pgms/ubgears] Error 1
Agora não encontrou uma lib do OpenGL.
Checando minhas libs. Está faltando a libGL.so
(ela está lá, mas o mome não é o mesmo)
$ ls -l /usr/lib/libGL* ... lrwxrwxrwx 1 root root 12 2009-09-06 17:05 /usr/lib/libGL.so.1 -> libGL.so.1.2 -rw-r--r-- 1 root root 514648 2009-06-25 12:35 /usr/lib/libGL.so.1.2 ...
Criando o link
# ln -s /usr/lib/libGL.so.1.2 /usr/lib/libGL.so
Build novamente
$ make Checking distribution of files ./pgms exists ./src exists ./testdir exists ./tmp exists ./results exists gcc -o ./pgms/ubgears -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/ubgears.c -lGL -lXext -lX11 $ _
OK!!
Mas, todo esse trabalho não valeu a pena. O teste gráfico não é mais interessante que os testes de sistema.
Referências sobre a lib de OpenGL
- http://ubuntuforums.org/archive/index.php/t-189704.html
-
"mesa-common-dev. If you have an Nvidia card, you can grab nvidia's
gl.h
which will have their own extensions by installingnvidia-glx-dev
." - http://forums.purebasic.com/english/viewtopic.php?t=35028&sid=69c8e59ba30e1b85a049ef092cbe2313
-
"The error
/usr/bin/ld:cannot find -IGL
means that there is a problem locating the OpenGL libs thats found in the/usr/lib
directory. These files (libGL.so
/libGL.so.1
) are actually symbolic links to the latest version of libGL (currentlylibGL.so.1.2
on my machine and also found in/usr/lib
)."