Re: [BUGS] ISM shared memory on solaris - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [BUGS] ISM shared memory on solaris
Date
Msg-id 200310241547.h9OFlaV01807@candle.pha.pa.us
Whole thread Raw
Responses Re: [BUGS] ISM shared memory on solaris
List pgsql-patches
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 majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (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

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: two-phase commit
Next
From: Bruce Momjian
Date:
Subject: Re: [BUGS] ISM shared memory on solaris