kernel.shmmax and kernel.shmall for Linux server

Started by Matthias Apitzabout 5 years ago2 messagesgeneral
Jump to latest
#1Matthias Apitz
guru@unixarea.de

Hello,

I've read the doc https://www.postgresql.org/docs/13/kernel-resources.html
but I'm still relatively clueless, what to set. For example for our
standard installations like

- RAM: 32 GByte
- one PostgreSQL 13.1 server
- one database with ~400 tables, 4 GByte in size
- 100-200 connecting PostgreSQL-clients (C/C++ application servers,
single threaded, for interactive usage)

The above document says, the Linux default values are good enough, but
they're:

# /usr/sbin/sysctl kernel | grep shm
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0
kernel.shmall = 1152921504606846720
kernel.shmmax = 18446744073709551615
kernel.shmmni = 4096

The values are coming from

# cat /boot/sysctl.conf-5.3.18-24.46-default
...
kernel.shmmax = 0xffffffffffffffff
# SHMALL = SHMMAX/PAGE_SIZE*(SHMMNI/16)
kernel.shmall = 0x0fffffffffffff00

Any hints for real values?

matthias

--
Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Matthias Apitz (#1)
Re: kernel.shmmax and kernel.shmall for Linux server

Matthias Apitz <guru@unixarea.de> writes:

I've read the doc https://www.postgresql.org/docs/13/kernel-resources.html
but I'm still relatively clueless, what to set.

For modern PG versions on Linux, you basically shouldn't ever have to
touch those numbers. I'd only start to worry if I saw server startup
failures. These values do *not* constrain what you can set for
shared_buffers or the like; at most, they'd constrain how many PG
instances you can run on one machine.

regards, tom lane