[FUG-BR] Benchmark Performance -- PostgreSQL -- FreeBSD x Linux
Eduardo Frazão
edufrazao em gmail.com
Quinta Março 27 11:15:19 BRT 2008
Bom dia pessoal! Estamos desenvolvendo um sistema de gestão, que utilizará
como SGBD, PostgreSQL.
Decidi fazer alguns testes antes de escolher qual S.O. vai rodar o banco, e
publicar os resultados aqui, para obter alguma ajuda, inclusive nos tunings.
Utilizei o sysbench ( http://sysbench.sf.net ) para realizar os testes.
Configuração do servidor:
Dual Intel Xeon E5410 QuadCore 12MB Cache por CPU 1333Mhz FSB EM64T // 8GB
DDR2 ECC FBD // Controladora RAID Perc6/i ( LSI Logic MegaRaid SAS ) 256MB
Cache PCI-E // 4 Discos SAS Segate ST3146855SS 146GB / 15k RPM em Raid 5
// Duas Fontes de alimentação de 730W Reais.
Configurações da tabela de Testes:
Base com 1 Milhão de registros Randômicos
Quantidade Limite de Requisições: 10 000
Compilação do SysBench em ambos os sistemas: ( -march=nocona -O3 -pipe
-fomit-frame-pointer -m64 )
Versão: 0.4.8
Comando de preparação do banco de dados:
# ./sysbench --max-requests=10000 --test=oltp --pgsql-user=postgres
--pgsql-password=XXX --pgsql-db=sysbench --db-driver=pgsql
--oltp-dist-type=special --oltp-table-size=1000000 --oltp-read-only=off
--num-threads=16 prepare
Comando para realização do teste
# ./sysbench --max-requests=10000 --test=oltp --pgsql-user=postgres
--pgsql-password=XXX --pgsql-db=sysbench --db-driver=pgsql
--oltp-dist-type=special --oltp-table-size=1000000 --oltp-read-only=off
--num-threads=16 run
*******************************************************
* Resultado do primeiro teste
*******************************************************
Sistema Operacional: FreeBSD 7.0Stable AMD64 SMP - Scheduller ULE ( Kernel:
removidos apenas suporte a hardware não existentes, e adicionado a opção:
options HZ=1000 )
VERSÃO do PostgreSQL: 8.3.1 - ( Flags de compilação: -march=nocona -O3 -pipe
-funronll-loops )
Resultado:
OLTP test statistics:
queries performed:
read: 140070
write: 50025
other: 20010
total: 210105
transactions: 10005 (781.40 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190095 (14846.69 per sec.)
other operations: 20010 (1562.81 per sec.)
Test execution summary:
total time: 12.8039s
total number of events: 10005
total time taken by event execution: 204.6433
per-request statistics:
min: 0.0061s
avg: 0.0205s
max: 1.9591s
approx. 95 percentile: 0.0157s
Threads fairness:
events (avg/stddev): 625.3125/10.93
execution time (avg/stddev): 12.7902/0.00
********************************************************
* Resultado do Segundo teste
********************************************************
Sistema Operacional: FreeBSD 7.0Stable AMD64 SMP - Scheduller ULE ( Kernel:
removidos apenas suporte a hardware não existentes, e adicionado a opção:
options HZ=1000 )
VERSÃO do PostgreSQL: 8.2.7 ( Flags de compilação: -march=nocona -O3 -pipe
-funronll-loops )
OLTP test statistics:
queries performed:
read: 140056
write: 50020
other: 20008
total: 210084
transactions: 10004 (1040.60 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190076 (19771.31 per sec.)
other operations: 20008 (2081.19 per sec.)
Test execution summary:
total time: 9.6137s
total number of events: 10004
total time taken by event execution: 153.6019
per-request statistics:
min: 0.0040s
avg: 0.0154s
max: 0.6847s
approx. 95 percentile: 0.0266s
Threads fairness:
events (avg/stddev): 625.2500/10.92
execution time (avg/stddev): 9.6001/0.00
*****************************************************
* Resultado do Terceiro Teste
*****************************************************
Sistema Operacional: Gentoo Linux 2007.0 Stage 3 AMD64 - Kernel: Gentoo
Sources 2.6.23 SMP Core2/Newer Xeons (EM64T)
Versão do Banco: PostgreSQL 8.3.1 ( Flags de compilação: -march=nocona -O3
-pipe -funronll-loops -m64 )
Resultado:
OLTP test statistics:
queries performed:
read: 140000
write: 50000
other: 20000
total: 210000
transactions: 10000 (1476.05 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (28045.01 per sec.)
other operations: 20000 (2952.11 per sec.)
Test execution summary:
total time: 6.7748s
total number of events: 10000
total time taken by event execution: 108.1316
per-request statistics:
min: 0.0022s
avg: 0.0108s
max: 0.2696s
approx. 95 percentile: 0.0189s
Threads fairness:
events (avg/stddev): 625.0000/8.70
execution time (avg/stddev): 6.7582/0.00
---
***************************************
*** Resultado do Quarto Teste
***************************************
Sistema Operacional: Gentoo Linux 2007.0 Stage 3 AMD64 - Kernel: Gentoo
Sources 2.6.23 SMP Core2/Newer Xeons (EM64T)
Versão do Banco: PostgreSQL 8.2.7 ( Flags de compilação: -march=nocona -O3
-pipe -funronll-loops -m64 )
Resultado:
OLTP test statistics:
queries performed:
read: 140000
write: 50000
other: 20000
total: 210000
transactions: 10000 (189.47 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (3599.84 per sec.)
other operations: 20000 (378.93 per sec.)
Test execution summary:
total time: 52.7801s
total number of events: 10000
total time taken by event execution: 843.9876
per-request statistics:
min: 0.0032s
avg: 0.0844s
max: 0.2446s
approx. 95 percentile: 0.1395s
Threads fairness:
events (avg/stddev): 625.0000/15.79
execution time (avg/stddev): 52.7492/0.02
*********************************
* Resultado do Quinto Teste
*********************************
Sistema Operacional: Gentoo Linux 2007.0 Stage 3 AMD64 - Kernel: Gentoo
Sources 2.6.23 SMP Core2/Newer Xeons (EM64T)
Versão do Banco: PostgreSQL 8.2.7 ( Flags de compilação: -march=nocona -O3
-pipe -funronll-loops -m64 )
*** COMPILADOR: Intel C Compiler ( ICC ) - Versão: 10.0.0.26 Intel64
Resultado:
OLTP test statistics:
queries performed:
read: 140014
write: 50005
other: 20002
total: 210021
transactions: 10001 (1528.89 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190019 (29049.00 per sec.)
other operations: 20002 (3057.79 per sec.)
Test execution summary:
total time: 6.5413s
total number of events: 10001
total time taken by event execution: 104.4052
per-request statistics:
min: 0.0025s
avg: 0.0104s
max: 0.2413s
approx. 95 percentile: 0.0186s
Threads fairness:
events (avg/stddev): 625.0625/13.33
execution time (avg/stddev): 6.5253/0.00
Observação: Não pude usar ICC no FreeBSD, pois o port ainda não suporta o
compilador X86_64
---
Pessoal, por favor. A Idéia deste benchmark e POST não foi gerar flames. Na
verdade, gostaria de saber se alguem me indica técnicas de Tunnings no
FreeBSD para que eu possa fazer mais testes, e compartilhar os resultados
com todos!
Muito obrigado!
Um abraço
Eduardo Frazão
Mais detalhes sobre a lista de discussão freebsd