Performances postgresql - Réglage de SHMMAX et SHMALL

9

J'ai lu à peu près tout ce qu'il y a en ligne sur l'amélioration des performances postgres, mais les «bonnes» valeurs pour SHMMAX et SHMALL m'échappent toujours.

Le consensus semble être SHMMAX = total_memory / 4 et SHMALL = total_memory / 2 sont des valeurs de départ sûres.

Cependant, SHMALL peut être mesuré en pages ou en octets et je ne trouve aucune information sur ce qui est utilisé sur Ubuntu.

Ubuntu (ou plus généralement Debian) utilise-t-il des pages ou des octets pour SHMALL?

Enrico
la source

Réponses:

11

Pour tous les systèmes Linux que j'ai utilisés SHMALLest mesuré en pages et SHMMAXmesuré en octets. Je pense que vous pouvez vérifier votre système à l'aide de la ipcscommande, qui convertit toujours les paramètres ci-dessus en Koctets lors de la sortie, et le comparer avec les sysctlvaleurs:

[aseryozhin@centos ~]$ ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096               // SHMMNI   
max seg size (kbytes) = 524288              // SHMMAX
max total shared memory (kbytes) = 8388608  // SHMALL
min seg size (bytes) = 1

[aseryozhin@centos ~]$ sysctl -e kernel.shmmax
kernel.shmmax = 536870912

[aseryozhin@centos ~]$ sysctl -e kernel.shmall
kernel.shmall = 2097152

[aseryozhin@centos ~]$ getconf PAGE_SIZE
4096

SHMMAX: 524288 * 1024 = 536870912

SHMALL: 8388608 * 1024/4096 = 2097152

Alexander Seryozhin
la source
2

Ces variables sont mesurées en octets comme indiqué dans la documentation. Je pense qu'il est plus important de regarder les paramètres de configuration postgresql. Vous devez regarder les valeurs SHMALL / SHMMAX en cas de besoin. Par exemple, si vous souhaitez augmenter le nombre maximal de connexions, vous devrez peut-être augmenter ces limites.

Le réglage du serveur de base de données dépend de votre modèle d'utilisation, comme le nombre de connexions simultanées et la taille de la base de données. Augmenter un paramètre de configuration n'est pas toujours bon.

Khaled
la source
2
SHMMAX doit être augmenté afin d'augmenter shared_buffers, qui est le fruit le plus faible en termes de performances postgresql. Pouvez-vous ajouter un lien vers la documentation?
Enrico