PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Offres » [CDI][Paris] expert PostGreSQL - DBA Etudes & Développement » 03/06/2013 11:09:42

Bonjour,
Sous quelle forme vous souhaitez une réponse à votre demande?

#2 Re : Optimisation » Valeurs pour kernel.shmmax ,shared_buffers,work_mem,max_connexions. » 20/10/2012 13:38:23

Voilà qui est très clair.
Bonne journée Julien et merci de cette réponse.

#3 Re : Optimisation » Valeurs pour kernel.shmmax ,shared_buffers,work_mem,max_connexions. » 20/10/2012 12:22:02

J'ai bien modifié sysctl.conf et redémarré à chaque fois.
J'aurais pu mettre plus de shared buffer, mais je que je comprend pas pourquoi si on fixe
shmmax= 2^28 = 268 435 456 soit 268,435 456 millions, et un shared_buffer=268MB alors postgres râle,
alors qu'il ne râle plus avec 200MB.
J'ai l'impression que l'erreur vient du fait de l'approximation que je fais en considérant que 1Mo = 1 000 000 octets != 2^20 = 1 048 576
Si on fait le calcul juste avec shmmax=2^28 on a
shared_buffer = 2^28/2^20 = 2^8 = 256MB
C'est exactement la valeur que donne rjuju
pourtant il râlait avec shared_buffer=250Mo autant et de la même manière qu'avec shared_buffer=268Mo

Finalement, j'ai une solution pour m'en tirer avec shared_buffer=200Mo et j'aimerais comprendre.
Au fait, je suis avec postgres 9.2 et ubuntu precise, mais je ne crois pas que cette info soit très utile.

Je viens de faire un nouveau test en reprenant les valeurs de rjuju:

shmmax=512MB

et

kernel.shmmax=536870912
# 2^29
kernel.shmall=131072

postgres me donne l'erreur:
DETAIL:  Failed system call was shmget(key=5432001, size=572530688, 03600).
il va chercher une mémoire dont la taille est 572530688 est supérieure (de peu) à 2^29
si on change shared_buffer à 500, on a l'erreur:
DETAIL:  Failed system call was shmget(key=5432001, size=558759936, 03600).
si on change shared_buffer à 490 on a l'erreur:
DETAIL:  Failed system call was shmget(key=5432001, size=547717120, 03600).
si on change shared_buffer à 450 on n'a plus l'erreur!
BYZARRE non?

#4 Re : Optimisation » Valeurs pour kernel.shmmax ,shared_buffers,work_mem,max_connexions. » 20/10/2012 10:31:08

Sur le même sujet, en reprenant les infos données sur http://www.postgresql.org/docs/current/ … urces.html et partant de la règle selon laquelle
shmmax = taille de la RAM/4
shmall = shmax/ PAGESIZE
pour la config que j'ai

getconfig PAGESIZE 

     j'obtiens 4096
la RAM fait 2 Go soit 2^30.98 arrondi à 2^30 que je divise par 4, ça donne 2^28 = 268435456
et shmall = 2^28/4092 = 65536

en mettant dans postgres.conf

shared_buffer = 268Mo

et en modifiant les paramètres de kernel comme celà

sysctl -w kernel.shmmax=268435456
sysctl -w kernel.shmall=65536

Et bien, ça marche pas. Si je modifie postgres.conf:

shared_buffer = 200Mo

Ca marche. Quelqu'un sait-il ce qui ne va pas?

#5 Re : Publications » Publication d'une extension postgres » 27/09/2012 13:19:45

J'ai proposé l'extension à Prague PGConf.EU 2012 comme l'as suggéré Guillaume, mais la proposition n'a pas été acceptée.
L'extension qui fait maintenant l'usage de requêtes récursives - c'est vraiement pratique - a été portée sans problème sur postgreSql 9.2.
Je ne sais vraiement pas m'y prendre avec les questions de communication.
Voilà un exemple: http://olivierch.github.com/openBarter/
Si vous avez des suggestions, elles sont bienvenues.

#6 Demandes » recherche mission postgres sur l'IDF » 20/04/2012 09:59:46

ochaussavoine
Réponses : 0

Bonjour,
Je suis l'auteur d'une extension postgres en C et PLPGSQL publiée sur pgxn.org/dist/openbarter et recherche une mission sur l'Ile de France. Vous pouvez me contacter par email olivier.chaussavoine@gmail.com

#7 Re : Publications » Publication d'une extension postgres » 28/11/2011 12:59:14

Bonjour Damien et Jean Paul,
Merci pour ces encouragements.
Auriez vous connaissance de la manière de s'y prendre pour proposer une présentation au fosdem sur le sujet?
___________________________
Olivier Chaussavoine

#8 Re : Publications » Publication d'une extension postgres » 25/11/2011 10:52:32

Marc et Cédric bonjour,
J'ai tenu compte de vos conseils, et suis parvenu à supprimer de l'extension openbarter la bibliothèque berkeleydb qui nécessitait de faire coexister deux systèmes de gestion dynamique de mémoire qui s'ignorent souverainement. La nouvelle version 0.2.0 est publiée sur pgxn. Elle met la clause WITH à rude épreuve pour le parcours ainsi qu'un type nommé flow.
Il reste certainement des choses à ajuster mais la documentation permet aux personnes intéressées par le sujet de s'y plonger et de contribuer au développement sur github. Je vais de ce pas annoncer la nouvelle aux endroits que Cédric m'a indiqué.
Merci de vos critiques bienveillantes.

http://olivierch.github.com/openBarter/

Cdt.

#9 Re : Publications » Publication d'une extension postgres » 03/10/2011 15:35:13

DIJXSTRA qui est un pionnier de la théorie de graphes, a été le premier à publier en 1965 un court article sur le sujet:
http://www.dis.uniroma1.it/~baldoni/p569-dijkstra.pdf
Bien d'autres ont ensuite fait référence au problème de fond qu'il a soulevé.

#10 Re : Publications » Publication d'une extension postgres » 03/10/2011 14:33:02

Je suis conscient du fait que l'optimisation est remarquable, mais à chaque fois qu'une case mémoire est sollicitée, elle est protégée par un sémaphore. Si l'on écrit dans cette case, postgresql enclenche des mécanismes qui peuvent conduire à des blocages cycliques qu'on rencontre fréquemment en parcourant des graphes. Il existe de la littérature sur le sujet dont je pourrais vous retrouver les références. J'excuse donc grandement la décision de ne pas implémenter la norme SQL sur ce point. Les rédacteurs de la norme ont-il étudié la faisabilité de ce qu'ils demandaient? J'ai du utiliser berkeleydb pour m'affranchir de ces blocages.
J'envisage la parallélisation en délégant à des bases miroir la charge d'assurer le fort volume de lecture, et en retournant le petit résultat sur la base maitre en lecture/écriture. La version 9 de postgresql apporte exactement ce qu'il faut pour celà. Comme le goulot d'étranglement est bien souvent la bande passante du disque dur, je ne crois pas que les threads apporteraient grand chose. Avec cette méthode, on exploite les bandes passantes des disques des bases miroir en les ajoutant. C'est le plan, pour le futur, qui nécessiterait de prévoir sur la base maître un module qui déterminerait le miroir le moins chargé. Ce qui n'est pas encore fait.

#11 Re : Publications » Publication d'une extension postgres » 03/10/2011 11:09:27

Bonjour Cédric,

L'extension est portée sur la version 9.1 .  Je vais prendre connaissance de CREATE EXTENSION, et suivre tes recommandations.

Merci pour ces conseils.

#12 Re : Publications » Publication d'une extension postgres » 03/10/2011 09:38:48

Merci de l'information, mais les requêtes SQL récursives ne peuvent résoudre à elle seules les questions qui sont traitées, car le module openbarter produit un premier graphe à partir de la base, puis un autre à partir du premier, puis encore un autre pour obtenir les résultats. A chaque phase, il y a un algorithme différent: le premier est depth-first, le deuxième est aussi depth-first, et le troisième une version adaptée de bellman-ford.
Il serais dans doute faisable de coder le tout en plgsql, mais avec les performances d'un langage interprété, et les problèmes de verouillages cycliques propres à la base. La stratégie que j'ai choisi consiste à extraire de la base les données d'entrée (un gros volume), les traiter en mémoire vive indépendamment des mécanismes de la base, et de soumettre les résultats à la base (très faible volume) en vérifiant que ces données ne sont pas obsolètes. 

A+

#13 Re : Publications » Publication d'une extension postgres » 20/09/2011 16:37:57

J'aurais bien aimé pouvoir le faire avec postgres, mais je n'ai pas une connaissance suffisante de ses mécanismes internes pour faire ce que j'ai pu réaliser avec berkeleyDb. Ce sont des tables temporaires dont la durée de vie se limite à la requête postgres, qui me permettent de parcourir très rapidement le graphe des offres, et appliquer plusieurs algo de recherche. Toutes les tables berkeleydb restent en mémoire vive, et n'ont aucun mécanisme de sémaphore, ce qui permet d'éviter les problèmes de verouillage cyclique qu'on rencontre souvent lors de parcours de graphe. Lorsque les résultats sont rapatriés, les données sont versionnées, et rejetées si elles ne sont pas à jour. Je ne crois pas que ça doit arriver trop souvent.
Avantages du choix - ça marche. Inconvénients majeur - je dois allouer environ 4Mo par client séparément de la gestion mémoire de postgres. Je fais en sorte que ce quota ne soit jamais dépassé.
Il y a certainement moyen de faire la même chose en postgres, mais je ne m'y connais pas assez. Une partir de mon code pourrait en tout cas être repris car l'interface se limite à deux fichiers: 1) l'initialisation de la structure des tables 2) un ensemble d'itérateurs sur ces tables. Les tables contiennent des structures C propres à l'appli. Rien d'autre est dépendant de berkeleydb.

#14 Publications » Publication d'une extension postgres » 05/04/2011 15:55:07

ochaussavoine
Réponses : 19

Bonjour,

Je souhaiterais faire connaître la publication d'une extension Postgres écrite en C, accompagnée d'un modèle de données. Cette extension disponible sur https://github.com/olivierch/openBarter permet de mettre en place un serveur de troc. Ce serveur est accessible par un client postgres à travers quelques primitives qui voient des procédures stockées.
Cette extension utilise la bibliothèque Berkeley DB.
Je suis intéressé d'avoir vos réactions, même si la documentation est encore minimale.

Olivier Chaussavoine

Pied de page des forums

Propulsé par FluxBB