Rendimiento Postgresql: ajuste de SHMMAX y SHMALL

9

He leído casi todo lo que hay en línea sobre cómo mejorar el rendimiento de postgres, pero los valores "correctos" para SHMMAX y SHMALL aún me eluden.

El consenso parece ser SHMMAX = total_memory / 4 y SHMALL = total_memory / 2 son valores iniciales seguros.

Sin embargo, SHMALL se puede medir en páginas o bytes y no puedo encontrar ninguna información sobre cuál se usa en Ubuntu.

¿Ubuntu (o más generalmente Debian) usa páginas o bytes para SHMALL?

Enrico
fuente

Respuestas:

11

Para todos los sistemas Linux que utilicé SHMALLse mide en páginas y SHMMAXse mide en bytes. Creo que puede verificar su sistema usando el ipcscomando, que siempre convierte los parámetros anteriores en KBytes durante la salida, y compararlo con los sysctlvalores:

[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
fuente
2

Estas variables se miden en bytes como se indica en la documentación. Creo que es más importante mirar los parámetros de configuración postgresql. Debe mirar los valores SHMALL / SHMMAX cuando sea necesario. Por ejemplo, si desea aumentar el número máximo de conexiones, es posible que deba aumentar estos límites.

El ajuste del servidor de la base de datos depende de su patrón de uso, como la cantidad de conexiones simultáneas y el tamaño de la base de datos. Aumentar un parámetro de configuración no siempre es bueno.

Khaled
fuente
2
SHMMAX debe aumentarse para aumentar shared_buffers, que es la fruta más baja en lo que respecta al rendimiento postgresql. ¿Puedes agregar un enlace a la documentación?
Enrico