[FUG-BR] RES: Teste Performance PostgreSQLFreeBSD Linux e Windows2003Server
Rafael Henrique Faria
rafaelhfaria em gmail.com
Quinta Agosto 24 12:43:08 BRT 2006
Eu concordo com o Patrick.
Benchmark é uma coisa complicada. De um lado o pessoal acha que a instalação
padrão é a melhor. De outro que o sistema tunnado é o ideal. Porém muitas
coisas interferem além disso. O hardware utilizado, memória, placa mãe, HDs,
fonte, cabos.
Agora vou colocar alguns pontos.
Dizer que o melhor é a instalação padrão, existem controvérsias. Isso seria
o mesmo que entrar em uma competição de performance de carros com um carro
original de fabrica. Com o carro original ele vai ter apenas 70% do
desempenho real do carro. Isso é feito para que quando alguém sair
acelerando no máximo do carro, ele não explodir na hora. Mas tunnar o carro,
deixar ele a 100% do desempenho que ele pode atingir, sem adicionar nada
novo (sem NOS, turbo e coisas do tipo) vc vai estar ganhando desempenho com
o original do carro.
O mesmo aplicaria aos SO, uma instalação padrão é feita para rodar em tudo
quanto eh lugar, pecando em varias aspectos. Optimizar ele para o hardware
usado, para a aplicação que se deseja utilizar, não estriamos fazendo nada
anormal, exagerado, apenas fazendo o SO rodar ao máximo de seu desempenho.
Optimizar um SO nós vamos estar utilizando recursos que foram adicionados ao
sistema para quem ele realmente funcione em sua melhor forma, em seu melhor
desempenho.
A um tempo atraz, eu participei de um teste de desempenho de hardware,
usando o software SuperPI, onde o programa calcula o valor exato de PI com 1
milhão de dígitos após a virgula, e o desempenho do hardware era obtido pelo
tempo levado no calculo. O software não continha nenhuma optimização para
hardware. Então ele rodava do mesmo modo em todos os processadores. Mas
depois apareceram algumas versões com optimização para instroções SSE, SSE2,
64 bits, etc... Mas os resultados obtidos com essas versões optimizadas
foram descartados. Eu achei injusto.
Realizar um teste de desempenho em um processador, sem usar os seus recursos
é o mesmo que testar uma rodovia de alta velocidade com um fusca.
Um teste realizado com o software original, apresentava 47 segundos para
realizar os cálculos em um determinado processador, e o mesmo processador
com o software optimizado para ele, chegava a 32 segundos.
Agora, acredito que assim, cada pessoa, deveria utilizar o software
apropriado para o seu processador, com os recursos disponíveis no
processador para obter o verdadeiro resultado de quanto o processador dele
demora para realizar o calculo. Se um processador tem apenas SSE, então é o
maximo que ele vai conseguir, mas se um processador tem SSE3, HT, 64 bits,
então é claro que ele vai ter uma performance muito melhor.
E o mais incrível, durante os testes que eu realizei, apenas uma troca de
memória (não de tamanho, mas apenas de modelo de memória, eu utilizava 4
pentes de Samsung 400Mhz, 512mb cada, troquei por 5 Samsung TCCC 400Mhz,
512mb cada), eu tive uma redução de 2 segundos no calculo. Até modelo de
memória influencia e muito no desempenho de um computador. E eu com um
Pentium 4 Prescott com 3,0Ghz, 2Gb d ram, placa mãe ASUS P4C800 com chipset
intel i875, fiquei atraz de um cada com um Pentium 4 Prescott com 2,6Ghz,
com 512mb d Ram, e placa mãe Intel. Só pela palca ser diferente, a maquina
teve um desempenho melhor, mesmo tempo um processador mais lento.
Enfim, por isso eu acho que nos benchmarks, os SO devem ser otimizados ao
maximo, para ser utilizados todos os seus recursos.
Mas o cenário nunca será real. Estes testes somente devem servir como
referencia do que poderia ser atingido com uma configuração parecida.
Só de termos uma placa mãe diferente, um processador diferente, memória
diferente, da utilizada no teste, nós nunca conseguiremos um desempenho
parecido, pode ser melhor, como pode ser pior.
Eu já vi propagandas da Oracle dizendo que conseguiu realizar mais de 1
bilhão de consultas em não sei quanto tempo, utilizando 3 maquinas Sparc com
Solaris e não sei mais o que... isso é completamente fora do cenário real da
maioria das pessoas. O que importa se o Oracle fez 1 bilhão de consultas em
tal maquina, se eu utilizo um Pentium 4 como servidor?
Optimização de SO é algo complicado, cada um tem suas experiências, suas
dores de cabeça, sua melhor solução, por isso ninguém concorda com as
optimizações que foram feitas em benchmarks, onde o seu sistema preferido
saiu perdendo, vc com certeza dirá: se eu tivesse feito a optimização o
teste seria diferente. Certo, mas temos que entender que naquela situação,
não teria sido diferente, pq aquele foi o resultado obtido. Cada vez que o
teste for feito, em lugar diferente, pessoas diferentes envolvidas, hardware
diferente, o teste vai ter um resultado diferente.
O benchmark está longe de ser uma ciência exata. Essa é a verdade.
O melhor que temos q fazer, é escolher um SO, um SGBD, e nos dedicarmos ao
máximo para optimizar eles em nossos servidores, com nossos softwares, para
nossos sistemas, etc, etc, etc, etc....
O teste de desempenho realizado pelo nosso amigo foi muito bom, mostrou o
cenário dele, e o melhor sistema que poderia ser obtido no cenário dele. E
que ele conseguiria obter.
Mas nada impede que em outro cenário, alguém com um Windows 2003, e o
PostgreSQL, consiga obter um resultado melhor do que o dele.
Rafael Henrique Faria
---------------------
Setor de Tecnologia da Delegacia da Receita Federal da 8a. Região
rafael.faria em receita.fazenda.gov.br
Mais detalhes sobre a lista de discussão freebsd