Thread: pgsql: Dramatically reduce System V shared memory consumption.
Dramatically reduce System V shared memory consumption. Except when compiling with EXEC_BACKEND, we'll now allocate only a tiny amount of System V shared memory (as an interlock to protect the data directory) and allocate the rest as anonymous shared memory via mmap. This will hopefully spare most users the hassle of adjusting operating system parameters before being able to start PostgreSQL with a reasonable value for shared_buffers. There are a bunch of documentation updates needed here, and we might need to adjust some of the HINT messages related to shared memory as well. But it's not 100% clear how portable this is, so before we write the documentation, let's give it a spin on the buildfarm and see what turns red. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/b0fc0df9364d2d2d17c0162cf3b8b59f6cb09f67 Modified Files -------------- src/backend/port/sysv_shmem.c | 89 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 86 insertions(+), 3 deletions(-)
Hi Robert, You have a small typo in the patch: + /* + * pagesize will, for practical purposes, always be a power of two. + * But just in case it isn't, we do it this way instead of using + * TYPEALIGN(). + */ + AnonymousShmemSize = size; + if (size % pagesize != 0) + AnonymousShmemSize += pagesize - (size % pagesize); + + /* + * We assume that no one will attempt to run PostgreSQL 9.3 or later + * on systems that are ancient enough that anonymous shared memory is + * not supported, such as pre-2.4 versions of Linux. If that turns out + * to be false, we might need to add a run-time test here and do this + * only if the running kernel supports it. + */ + AnonymousShmem = mmap(NULL, size, PROT_READ|PROT_WRITE, PG_MMAP_FLAGS, + -1, 0); Note that you use size in the mmap... Andres -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Andres Freund <andres@2ndquadrant.com> writes: > Hi Robert, > You have a small typo in the patch: Fixed, thanks for the report. regards, tom lane