Yikes! We thought we were already using ISM on Solaris.
Would you test the attached patch? It uses _solaris_ rather than
SHM_SHARE_MMU in the define test. Does that work too?
---------------------------------------------------------------------------
Josh Wilmes wrote:
> I hope this is the right place to send this.. the FAQ in the
> distribution mentions http://www.PostgreSQL.org/bugs/bugs.php, which
> doesn't work.
>
> We've found that postgresql wasn't using ISM shared memory on solaris,
> which theoretically would cost performance. The root cause in our case
> was that the "solaris" define is not defined by our compilers or by
> postgresql itself.
>
> The patch below simple has it check SHM_SHARE_MMU instead, which should
> work fine. I verified (with 'pmap') that the database is now using ISM
> on its shared memory, after this patch was applied.
>
> --Josh
>
>
>
> --- sysv_shmem.c.orig 2002-09-04 13:31:24.000000000 -0700
> +++ sysv_shmem.c 2003-10-23 12:52:26.756765000 -0700
> @@ -143,7 +143,7 @@
> on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid));
>
> /* OK, should be able to attach to the segment */
> -#if defined(solaris) && defined(__sparc__)
> +#if defined(SHM_SHARE_MMU) && defined(__sparc__)
> /* use intimate shared memory on SPARC Solaris */
> memAddress = shmat(shmid, 0, SHM_SHARE_MMU);
> #else
> @@ -323,8 +323,8 @@
> shmid = shmget(NextShmemSegID, sizeof(PGShmemHeader), 0);
> if (shmid < 0)
> continue; /* failed: must
> be some other app's */
> -
> -#if defined(solaris) && defined(__sparc__)
> +
> +#if defined(SHM_SHARE_MMU) && defined(__sparc__)
> /* use intimate shared memory on SPARC Solaris */
> memAddress = shmat(shmid, 0, SHM_SHARE_MMU);
> #else
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to [EMAIL PROTECTED] so that your
> message can get through to the mailing list cleanly
>
--
Bruce Momjian | http://candle.pha.pa.us
[EMAIL PROTECTED] | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: src/backend/port/sysv_shmem.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/port/sysv_shmem.c,v
retrieving revision 1.21
diff -c -c -r1.21 sysv_shmem.c
*** src/backend/port/sysv_shmem.c 13 Oct 2003 22:47:15 -0000 1.21
--- src/backend/port/sysv_shmem.c 24 Oct 2003 15:46:03 -0000
***************
*** 133,139 ****
on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid));
/* OK, should be able to attach to the segment */
! #if defined(solaris) && defined(__sparc__)
/* use intimate shared memory on SPARC Solaris */
memAddress = shmat(shmid, 0, SHM_SHARE_MMU);
#else
--- 133,139 ----
on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid));
/* OK, should be able to attach to the segment */
! #if defined(__solaris__) && defined(__sparc__)
/* use intimate shared memory on SPARC Solaris */
memAddress = shmat(shmid, 0, SHM_SHARE_MMU);
#else
***************
*** 352,358 ****
hdr = (PGShmemHeader *) shmat(*shmid,
UsedShmemSegAddr,
! #if defined(solaris) && defined(__sparc__)
/* use intimate shared memory on Solaris */
SHM_SHARE_MMU
#else
--- 352,358 ----
hdr = (PGShmemHeader *) shmat(*shmid,
UsedShmemSegAddr,
! #if defined(__solaris__) && defined(__sparc__)
/* use intimate shared memory on Solaris */
SHM_SHARE_MMU
#else
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org