você está aqui: Home  → Arquivo de Mensagens

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

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 installing nvidia-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 (currently libGL.so.1.2 on my machine and also found in /usr/lib)."


 

 

Veja a relação completa dos artigos de Thiago Cesar Vieira

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script