Re: ISM shared memory on solaris - Mailing list pgsql-bugs
From | Josh Wilmes |
---|---|
Subject | Re: ISM shared memory on solaris |
Date | |
Msg-id | 3F994CD5.6080604@cisco.com Whole thread Raw |
In response to | Re: ISM shared memory on solaris (Bruce Momjian <pgman@candle.pha.pa.us>) |
List | pgsql-bugs |
Nope, __solaris__ is not defined on our system either. --Josh Bruce Momjian wrote: > 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 >> > > > > ------------------------------------------------------------------------ > > 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-bugs by date: