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

#1 30/04/2014 18:09:56

Philippe PAVY
Membre

buffers_clean de bgwriter

Bonjour,

Dans la table 'pg_stat_bgwriter' on trouve les informations sur les processus qui ont du assurer l'écriture des buffers modifiés:
     buffers_checkpoint lorsque c'est le checkpoint qui a fait le travail,
     buffers_clean pour bgwriter,
     buffers_backend lorsque c'est un processus client.

buffers_checkpoint, facile à comprendre et c'est lui qui doit assurer le maximum.
buffers_backend, tout aussi facile, mais là le compteur doit être faible pour que les backends fassent ce pour quoi ils sont fait: Répondre aux clients rapidement.

Par contre j'ai un plus de mal avec 'buffers_clean'. Comment doit être ce compteur par rapport à buffers_checkpoint ? Pourquoi et à quel moment bgwriter doit-il ou décide t'il d'écrire lui même des buffers ?
Ce que j'ai aussi un peu de mal à comprendre, c'est cette différence faite entre 'checkpoint' et 'bgwriter' !!! Il me semblait que les 'checkpoint' déclenchaient le travail du bgwriter qui lui était tout le temps lancé.... Le principe de fonctionnement de cet ensemble bgwriter et checkpoint n'est pas très clair.

Pouvez-vous m'apporter quelques explications sur le sujet, dans le but de pouvoir plus facilement configurer l'ensemble des paramètres bgwriter et checkpoint du postgresql.conf ?

Merci d'avance.
Cdlt

Hors ligne

#2 30/04/2014 21:40:49

gleu
Administrateur

Re : buffers_clean de bgwriter

Comment doit être ce compteur par rapport à buffers_checkpoint ?

En fait, peu importe que les buffers soient écrits par le checkpointer ou par le writer process. L'important, c'est, comme vous le dites, qu'ils ne soient pas écrits par les backends.

Pourquoi et à quel moment bgwriter doit-il ou décide t'il d'écrire lui même des buffers ?

Par défaut, toutes les 200ms, le writer process va prendre en considération un certain nombre de buffers dans le cache et écrire sur disque ceux qui sont modifiés. La configuration se fait via les paramètres bgwriter_* : bgwriter_delay, bgwriter_lru_maxpages et bgwriter_lru_multiplier.

Quand un CHECKPOINT se déclenche, le writer process (et maintenant le checkpointer) va récupérer tous les blocs modifiés et les écrire tous sur disque.

Donc le writer process a deux comportements, suivant qu'il exécute un CHECKPOINT ou qu'il n'en exécute pas (auquel cas il fait quand même des écritures partielles de nettoyage très fréquemment).


Guillaume.

Hors ligne

#3 01/05/2014 16:36:14

Philippe PAVY
Membre

Re : buffers_clean de bgwriter

Bonjour,


Merci 'Gleu' pour cet éclaircissement.


Donc si j'ai bien compris:
     _ bgwriter est un processus qui tourne en tâche de fond et qui est lancé au lancement de l'instance,
     _ Ce processus traite de manière régulière les Checkpoints
          Paramètres: checkpoint_segments, checkpoint_timeout et checkpoint_completion_target,
     _ En plus des checkpoints, bgwriter assure en boucle la descente sur disque de buffers au besoin. Le fait t'il aussi pendant la phase de checkpoint: Je regarderai cela.
          Paramètres: bgwriter_delay, bgwriter_lru_maxpages et bgwriter_lru_multiplier


Optimisations et règles de fonctionnements
     _ Eviter au mieux les écritures de buffers par les backends. Les écritures doivent être prises en charge par le bgwriter, soit en phase de checkpoint soit directement à l'initiative de bgwriter.
     _ Empêcher le déclenchement des checkpoints par dépassement du checkpoint_segments. Le déclenchement doit se faire par checkpoint_timeout.
     _ Il peut être nécessaire d'augmenter le shared_buffers si bgwriter ne suit pas la charge de modifications en base.
     _ Lisser le taux de descentes des buffers sur disque en ajustant les paramètres checkpoint_completion_target et bgwriter*


Etes vous d'accord avec ces explications ?
Avez-vous d'autres points à ajouter concernant le fonctionnement ou le paramétrage ?


Merci à vous
Cdlt

Dernière modification par Philippe PAVY (01/05/2014 16:37:09)

Hors ligne

#4 01/05/2014 17:32:02

gleu
Administrateur

Re : buffers_clean de bgwriter

Etes vous d'accord avec ces explications ?

Oui.

Avez-vous d'autres points à ajouter concernant le fonctionnement ou le paramétrage ?

Non, pas spécialement smile


Guillaume.

Hors ligne

#5 01/05/2014 20:55:00

Philippe PAVY
Membre

Re : buffers_clean de bgwriter

Alors merci bien pour tes informations sur ce sujet.

Cdlt

Hors ligne

Pied de page des forums