Attaching and using the Postgres shared memory segment - Mailing list pgsql-hackers

From Paul van den Bogaard
Subject Attaching and using the Postgres shared memory segment
Date
Msg-id B167A05A-52AC-4D4E-B0AD-1B8998F56D6C@sun.com
Whole thread Raw
Responses Re: Attaching and using the Postgres shared memory segment  ("Heikki Linnakangas" <heikki@enterprisedb.com>)
List pgsql-hackers
to look into an idea I currently have I need (and implemented)  a new  
piece of memory that resides in (Postgres) shared memory.  My data  
structures are in place an the new database seems running fine. Even  
under high load :-)

Since these data structures are for collecting information I was able  
to create a new function that retrieves its information from these  
data structures and returns them as a result from a query.

However this is too intrusive. Since everything is in shared memory it  
should be possible for an external, yet to be created, process to  
attach to the shared memory segment (read only mode only) to collect  
these data structures.

However, when I read the source I feel a little stuck. Kind of chicken  
and egg situation perhaps.

I have the address mapping of the shared memory (doing stuff on  
Solaris only). I can pass this information to InitShmemAccess (ipc/ 
shmem.c).  There is however a missing settting for ShmemIndex. This  
one can be initialsed by calling InitShmemIndex(). The only thing that  
makes me wonder is its need to use ShmemIndexLock. Although this is  
just an enum, and  therefore an index in some array created in  
CreateLWLock (lwlock.c).  I do not see how I can get access to this  
lock. Is it "just" there since obviously the whole Postgres shared  
memory is allocated, initialised and likely already heavily used.
Do the locks map to a "well know address" so I can do without further  
in process initialisation? Or is there another routine (or two ...)  
that I need to call in order to make things working.

Advise on how to proceed or pointers to docs in which this stuff is  
explained are highly appreciated.

Thanks
Paul.



---------------------------------------------------------------------------------------------
Paul van den Bogaard                               Paul.vandenBogaard@sun.com
ISV-E  -- ISV Engineering, Opensource Engineering group

Sun Microsystems, Inc                              phone:        +31  
334 515 918
Saturnus 1                                                 extentsion:  
x (70)15918
3824 ME Amersfoort                                 mobile:       +31  
651 913 354
The Netherlands                                        fax:             
+31 334 515 001



pgsql-hackers by date:

Previous
From: Mark Cave-Ayland
Date:
Subject: Re: WIP patch: reducing overhead for repeat de-TOASTing
Next
From: "Pavel Stehule"
Date:
Subject: Re: Resolving polymorphic functions with related datatypes