Thread: kernel.shmmax and kernel.shmall for Linux server

kernel.shmmax and kernel.shmall for Linux server

From
Matthias Apitz
Date:
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



Re: kernel.shmmax and kernel.shmall for Linux server

From
Tom Lane
Date:
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