IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Faut t'il compiler Postgresql différemment ?


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 245
    Par défaut Faut t'il compiler Postgresql différemment ?
    Bonjour
    J'ai effectué un petit test comparatif (Postgresql compilé GNU et Postgresql compilé ICC Intel)
    sur une machine (lambda) instruite d'un O/S LINUX OPENSUSE 11 (32 Bits)
    Un test au plus simple juste pour voir déjà si ce n'est pas plus lent....
    j'observe que le compilateur Intelois apporte un gain de performance....

    Explain
    donne des valeurs approximatives mais sur un comparatif la différence est théoriquement une mesure significatif.
    Comme un blaireau je n'ai pas pensé à l'option (test) dans la config du Makefile je ne vais pas tout refaire maintenant (hein... Ségolène ! ),
    ce résultat me suffit je vais travailler directement via le backend en CGI sur une application
    qui tourne avec Apache 2.2.10 lui même déjà converti dans cette couleur.

    Il faudrait refaire les tests (hein... Ségolène ?) avec une autre version du compilateur GNU
    (je n'ai pas le courage de le recompiler sur lui même (il faut 3 heures et +)
    de plus je ne suis pas du tout certain de faire mieux que l'équipe Novell OPENSUSE
    (La distribution est superbe pour sa convivialité on se croirait presque chez les Billois ... )

    Je vais refaire des tests plus tard sur une machine 8 processeurs avec les options pour le parallélisme
    (D'après la documentation celles-ci semblent être polyvalentes de celles utilisées pour les nouveaux
    # bi et x4 64 Bits etc...)

    La version Postgresql source utilisée est 8.2.10

    TEST GNU GCC 1
    base=# explain analyze select * from e44;
    QUERY PLAN
    -----------------------------------------------------------------------------------------------------------
    Seq Scan on e44 (cost=0.00..1674.54 rows=34554 width=272) (actual time=0.013..62.204 rows=59218 loops=1)
    Total runtime: 93.453 ms
    (2 rows)

    TEST GNU GCC 2 (Table doublée)
    base=# explain analyze select * from e44;
    QUERY PLAN
    -------------------------------------------------------------------------------------------------------------
    Seq Scan on e44 (cost=0.00..3347.82 rows=69082 width=272) (actual time=0.012..101.880 rows=118436 loops=1)
    Total runtime: 164.303 ms
    (2 rows)


    TEST INTEL ICC 1
    base=# explain analyze select * from e44;
    QUERY PLAN
    -----------------------------------------------------------------------------------------------------------
    Seq Scan on e44 (cost=0.00..1674.54 rows=34554 width=272) (actual time=0.011..60.922 rows=59218 loops=1)
    Total runtime: 88.604 ms
    (2 rows)

    TEST INTEL ICC 2 (Table doublée)
    base=# explain analyze select * from e44;
    QUERY PLAN
    -------------------------------------------------------------------------------------------------------------
    Seq Scan on e44 (cost=0.00..3347.82 rows=69082 width=272) (actual time=0.011..102.892 rows=118436 loops=1)
    Total runtime: 154.543 ms
    (2 rows)


    LA VERSION DU COMPI GCC
    postgres@linux-de4c:/usr/local/pgsql/bin> gcc -v
    Using built-in specs.
    Target: i586-suse-linux
    Configured with: ../configure --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --program-suffix=-4.3 --enable-version-specific-runtime-libs --enable-linux-futex --without-system-libunwind --with-cpu=generic --build=i586-suse-linux
    Thread model: posix
    gcc version 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036] (SUSE Linux)


    LA VERSION DU COMPI ICC
    postgres@linux-de4c:/usr/local/pgsql/bin> icc -V
    Intel(R) C Compiler Professional for applications running on IA-32, Version 11.0 Build 20080930 Package ID: l_cproc_p_11.0.069
    Copyright (C) 1985-2008 Intel Corporation. All rights reserved.


    LE REPERTOIRE BIN RESULTANT COMPILE AVEC ICC (Les progs sont près de 3 fois plus lourds ???? )
    postgres@linux-de4c:/usr/local/pgsql/bin> ls -l
    total 34352
    -rwxr-xr-x 1 root root 117714 nov. 22 01:08 clusterdb
    -rwxr-xr-x 1 root root 117824 nov. 22 01:08 createdb
    -rwxr-xr-x 1 root root 125415 nov. 22 01:08 createlang
    -rwxr-xr-x 1 root root 118570 nov. 22 01:08 createuser
    -rwxr-xr-x 1 root root 117466 nov. 22 01:08 dropdb
    -rwxr-xr-x 1 root root 125658 nov. 22 01:08 droplang
    -rwxr-xr-x 1 root root 117452 nov. 22 01:08 dropuser
    -rwxr-xr-x 1 root root 553138 nov. 22 01:08 ecpg
    -rwxr-xr-x 1 root root 155318 nov. 22 01:08 initdb
    -rwxr-xr-x 1 root root 2989 nov. 22 01:08 ipcclean
    -rwxr-xr-x 1 root root 27210563 nov. 22 14:47 newbase.sav
    -rwxr-xr-x 1 root root 437825 nov. 22 14:47 newexam.sav
    -rwxr-xr-x 1 root root 7541 nov. 22 14:47 newtadm.sav
    -rwxr-xr-x 1 root root 43934 nov. 22 01:08 pg_config
    -rwxr-xr-x 1 root root 42476 nov. 22 01:08 pg_controldata
    -rwxr-xr-x 1 root root 95886 nov. 22 01:08 pg_ctl
    -rwxr-xr-x 1 root root 385932 nov. 22 01:08 pg_dump
    -rwxr-xr-x 1 root root 137086 nov. 22 01:08 pg_dumpall
    -rwxr-xr-x 1 root root 85165 nov. 22 01:08 pg_resetxlog
    -rwxr-xr-x 1 root root 206178 nov. 22 01:08 pg_restore
    -rwxr-xr-x 1 root root 4239414 nov. 22 01:08 postgres
    lrwxrwxrwx 1 root root 8 nov. 22 01:08 postmaster -> postgres
    -rwxr-xr-x 1 root root 375710 nov. 22 01:08 psql
    -rwxr-xr-x 1 root root 122098 nov. 22 01:08 reindexdb
    -rwxr-xr-x 1 root root 84962 nov. 22 01:08 vacuumdb


    LE REPERTOIRE BIN RESULTANT COMPLILE AVEC GCC GNU
    postgres@linux-de4c:/usr/local/oldpgsql/bin> ls -l
    total 32020
    -rwxr-xr-x 1 root root 43906 nov. 17 03:02 clusterdb
    -rwxr-xr-x 1 root root 43867 nov. 17 03:02 createdb
    -rwxr-xr-x 1 root root 52107 nov. 17 03:02 createlang
    -rwxr-xr-x 1 root root 44151 nov. 17 03:02 createuser
    -rwxr-xr-x 1 root root 39685 nov. 17 03:02 dropdb
    -rwxr-xr-x 1 root root 52206 nov. 17 03:02 droplang
    -rwxr-xr-x 1 root root 39687 nov. 17 03:02 dropuser
    -rwxr-xr-x 1 root root 469745 nov. 17 03:02 ecpg
    -rwxr-xr-x 1 root root 58484 nov. 17 03:02 initdb
    -rwxr-xr-x 1 root root 2989 nov. 17 03:02 ipcclean
    -rwxr-xr-x 1 root root 27210563 nov. 22 15:05 newbase.sav
    -rwxr-xr-x 1 root root 437825 nov. 22 15:05 newexam.sav
    -rwxr-xr-x 1 root root 7541 nov. 22 15:05 newtadm.sav
    -rwxr-xr-x 1 root root 25138 nov. 17 03:02 pg_config
    -rwxr-xr-x 1 root root 24686 nov. 17 03:02 pg_controldata
    -rwxr-xr-x 1 root root 34662 nov. 17 03:02 pg_ctl
    -rwxr-xr-x 1 root root 214992 nov. 17 03:02 pg_dump
    -rwxr-xr-x 1 root root 57030 nov. 17 03:02 pg_dumpall
    -rwxr-xr-x 1 root root 29393 nov. 17 03:02 pg_resetxlog
    -rwxr-xr-x 1 root root 102974 nov. 17 03:02 pg_restore
    -rwxr-xr-x 1 root root 3347911 nov. 17 03:02 postgres
    lrwxrwxrwx 1 root root 8 nov. 17 03:02 postmaster -> postgres
    -rwxr-xr-x 1 root root 254546 nov. 17 03:02 psql
    -rwxr-xr-x 1 root root 43938 nov. 17 03:02 reindexdb
    -rwxr-xr-x 1 root root 30108 nov. 17 03:02 vacuumdb



    INFO SUR LE MONO PROCESSEUR INTEL DE CETTE MACHINE LAMBDA DE TEST
    <6>CPU: Trace cache: 12K uops, L1 D cache: 16K
    <6>CPU: L2 cache: 1024K
    <6>CPU: Hyper-Threading is disabled
    <6>Intel machine check architecture supported.
    <6>Intel machine check reporting enabled on CPU#0.
    <6>CPU0: Intel P4/Xeon Extended MCE MSRs (12) available
    <6>CPU0: Thermal monitoring enabled
    <6>using mwait in idle threads.
    <4>Compat vDSO mapped to ffffe000.
    <6>Checking 'hlt' instruction... OK.
    <6>SMP alternatives: switching to UP code
    <6>Freeing SMP alternatives: 18k freed
    <6>ACPI: Core revision 20070126
    <6>ACPI: Checking initramfs for custom DSDT
    <4>Parsing all Control Methods:
    <4>Table [DSDT](id 0001) - 303 Objects with 29 Devices 119 Methods 23 Regions
    <4>Parsing all Control Methods:
    <4>Table [SSDT](id 0002) - 7 Objects with 0 Devices 1 Methods 0 Regions
    <4> tbxface-0598 [00] tb_load_namespace : ACPI Tables successfully acquired
    <4>evxfevnt-0091 [00] enable : Transition to ACPI mode successful
    <4>CPU0: Intel(R) Pentium(R) 4 CPU 2.80GHz stepping 01
    <6>Total of 1 processors activated (5591.45 BogoMIPS).
    <4>ENABLING IO-APIC IRQs
    <6>..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
    <6>Brought up 1 CPUs
    <7>CPU0 attaching sched-domain:
    <7> domain 0: span 00000000,00000000,00000000,00000001
    <7> groups: 00000000,00000000,00000000,00000001

    J'espère que les Intelois mettront les (librairies runtimes) sur une palte-forme en offshore afin
    que l'on puisse servir des version Postgresql binaires à la 'carte' (hein... Manman...?).

    Bien qu'ils soient favorisés par une alliance (hein ... Ségolène ! .. ) on ne peut dire que 'bravo ' aux Intelois (non .. ? ),
    la part du fromage gagnée n'est pas énorme mais en bon pingouin j'ai de la peine comme toi Ségolène
    Passer du chèvre au brie pour changer de la mimolette de Hollande reflète bien cette douloureuse métaphore.

    @Pg+ ou plutôt @Ps-
    Cordialement

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    pour ton test, ça c'est pas de l'informatique de grand-mère !!!
    C'est assez pointu ta question sur les perfs de postgresql en fonction du compilateur, tu devrais peut-être demander directement aux développeurs, il y a des listes de diffusion et des groupes de discussion : http://archives.postgresql.org/pgsql-fr-generale/
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 245
    Par défaut
    Merci bien Scheu pour ce lien
    Je vais au préalable faire des tests plus conséquents sur des machines (serveurs)
    @Pg++++++

Discussions similaires

  1. Faut-il continuer à developper sous Postgresql
    Par ZIED dans le forum PostgreSQL
    Réponses: 27
    Dernier message: 08/01/2009, 10h30
  2. [UBUNTU] Comment compiler Postgresql ?
    Par mr-casimir dans le forum Ubuntu
    Réponses: 1
    Dernier message: 13/02/2006, 11h01
  3. Probleme de compilation Postgresql sous Aix 4.3.3
    Par bustaf dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 16/12/2005, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo