[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