Re: Regarding Postgres Dynamic Shared Memory (DSA)

From: Mahi Gurram <teckymahi(at)gmail(dot)com>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Regarding Postgres Dynamic Shared Memory (DSA)
Date: 2017-05-23 12:22:33
Message-ID: CAGg=GufW=cec_78E69q8ZwMasRqP75UTLQtdT64XznJNMzUtqw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Michael,

Thanks for your response.

All i'm building is In-Memory Index as an extension over Postgres.

Postgres Indexes will get Insert calls and Read calls from various
processes(typically client/connection process - forked processes to
postmaster process). Hence i have to maintain my In-Memory index in shared
memory.

If i create DynamicSharedArea (DSA) in postmaster/main process, all these
Client/Connection processes(In-Memory Index Processes) need not attach to
that DSA using area handle. Because these are forked processes to
postmaster/Main process and hence they automatically gets attached.

Hence i'm trying to create DSA in _PG_init function as it is called by
postmaster/main process.

Hope this is clear.

Thanks & Best Regards,
- Mahi

On Tue, May 23, 2017 at 5:30 PM, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
wrote:

> On Tue, May 23, 2017 at 6:42 AM, Mahi Gurram <teckymahi(at)gmail(dot)com> wrote:
> > I'm building In-Memory index extension for Postgres, for which i'm
> trying to
> > use DSA. But ended with some issues, as it is not allowing me to create
> > DSA(Dynamic Shared Area) in _PG_init function.
> >
> > Please refer my_PG_init code below:
> >>
> >> void
> >> _PG_init(void)
> >> {
> >> area = dsa_create(LWLockNewTrancheId(), "CustomIndex_DSA");
> >> area_handle = dsa_get_handle(area);
> >> }
> >
> >
> > Because of this code, Postgres is not starting. Not even giving any error
> > messages in pg logs. Hence, i'm totally clue less :(
>
> It seems to me that you are creating those too early. For example, for
> a background worker process, DSA segments would likely be created in
> the main process routine. Without understanding what you are trying to
> achieve, it is hard to make a good answer. You could always use a
> ramdisk, but that would be likely be a waste of memory as Postgres has
> its own buffer pool, killing the performance gains of OS caching.
> --
> Michael
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2017-05-23 12:55:58 Re: Getting server crash after running sqlsmith
Previous Message Amit Kapila 2017-05-23 12:14:39 retry shm attach for windows (WAS: Re: OK, so culicidae is *still* broken)