Desempenho do Postgresql - Ajustando SHMMAX e SHMALL

9

Eu li quase tudo o que há on-line sobre como melhorar o desempenho do postgres, mas os valores "certos" para SHMMAX e SHMALL ainda me escapam.

O consenso parece ser SHMMAX = total_memory / 4 e SHMALL = total_memory / 2 são valores iniciais seguros.

No entanto, o SHMALL pode ser medido em páginas ou bytes e não consigo encontrar nenhuma informação sobre o que é usado no Ubuntu.

O Ubuntu (ou mais geralmente o Debian) usa páginas ou bytes para o SHMALL?

Enrico
fonte

Respostas:

11

Para todos os sistemas Linux que usei SHMALLsão medidos em páginas e SHMMAXem bytes. Eu acho que você pode verificar seu sistema usando o ipcscomando, que sempre converte os parâmetros acima em KBytes durante a saída e compará-lo com os 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
fonte
2

Essas variáveis ​​são medidas em bytes, conforme indicado na documentação. Eu acho que é mais importante olhar para os parâmetros de configuração do postgresql. Você precisa observar os valores SHMALL / SHMMAX quando necessário. Por exemplo, se você deseja aumentar o número máximo de conexões, pode ser necessário aumentar esses limites.

O ajuste do servidor de banco de dados depende do seu padrão de uso, como o número de conexões simultâneas e o tamanho do banco de dados. Aumentar um parâmetro de configuração nem sempre é bom.

Khaled
fonte
2
O SHMMAX precisa ser aumentado para aumentar o shared_buffers, que é o menor fruto pendente no desempenho do postgresql. Você pode adicionar um link para a documentação?
Enrico