Re: Allocating shared memory in Postgres - Mailing list pgsql-general

From Tom Lane
Subject Re: Allocating shared memory in Postgres
Date
Msg-id 10002.1562185057@sss.pgh.pa.us
Whole thread Raw
In response to Allocating shared memory in Postgres  (Souvik Bhattacherjee <kivuosb@gmail.com>)
Responses Re: Allocating shared memory in Postgres  (Souvik Bhattacherjee <kivuosb@gmail.com>)
List pgsql-general
Souvik Bhattacherjee <kivuosb@gmail.com> writes:
> I need to allocate shared memory in Postgres 11.0 outside the
> initialization phase. In order to achieve this I have done the following:
> - during a particular query, where I need to allocate shared memory (which
> is a function of the sizes of the tables in the query), I invoke
> ShmemInitStruct() in shmem.c

This seems like a pretty horrid idea.  For starters, what happens if two
backends do this concurrently?  Even with only one backend, if you do a
query that requires X space, and then you do another query that requires
X+1 space, what's going to happen?

Recent PG releases have a "DSM" mechanism for short-lived (query lifespan,
typically) shared memory that's separate from the core shmem pool.  That
might suit your needs better.   The system design is really not friendly
to demanding more core shmem after postmaster start.

            regards, tom lane



pgsql-general by date:

Previous
From: Souvik Bhattacherjee
Date:
Subject: Allocating shared memory in Postgres
Next
From: Tom Lane
Date:
Subject: Re: postgres 11 issue?