mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Patch against 7.2.1 sources. Uses Solaris Intimate Shared Memory
for Solaris on SPARC. Scott Brunza (sbrunza@sonalysts.com) gets credit for identifying the issue, making the change, and doing the regression tests. Earlier testing on 7.2rc2 and 7.2 showed performance gains of 1% to 10% on pgbench, osdb-pg, and some locally developed apps. Solaris Intimate Shared Memory is described in "SOLARIS INTERNALS Core Kernel Components" by Jim Mauro and Richard McDougall, Copyright 2001 Sun Microsystem, Inc. ISBN 0-13-022496-0 P.J. "Josh" Rovero
This commit is contained in:
parent
291c875f23
commit
b73859db8c
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.77 2002/03/06 06:10:05 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.78 2002/04/13 19:52:51 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
*
|
*
|
||||||
@ -632,7 +632,12 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, uint32 size, int permission)
|
|||||||
on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid));
|
on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid));
|
||||||
|
|
||||||
/* OK, should be able to attach to the segment */
|
/* OK, should be able to attach to the segment */
|
||||||
memAddress = shmat(shmid, 0, 0);
|
#if defined(solaris) && defined(__sparc__)
|
||||||
|
/* use intimate shared memory on SPARC Solaris */
|
||||||
|
memAddress = shmat(shmid, 0, SHM_SHARE_MMU);
|
||||||
|
#else
|
||||||
|
memAddress = shmat(shmid, 0, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (memAddress == (void *) -1)
|
if (memAddress == (void *) -1)
|
||||||
{
|
{
|
||||||
@ -812,7 +817,14 @@ IpcMemoryCreate(uint32 size, bool makePrivate, int permission)
|
|||||||
shmid = shmget(NextShmemSegID, sizeof(PGShmemHeader), 0);
|
shmid = shmget(NextShmemSegID, sizeof(PGShmemHeader), 0);
|
||||||
if (shmid < 0)
|
if (shmid < 0)
|
||||||
continue; /* failed: must be some other app's */
|
continue; /* failed: must be some other app's */
|
||||||
memAddress = shmat(shmid, 0, 0);
|
|
||||||
|
#if defined(solaris) && defined(__sparc__)
|
||||||
|
/* use intimate shared memory on SPARC Solaris */
|
||||||
|
memAddress = shmat(shmid, 0, SHM_SHARE_MMU);
|
||||||
|
#else
|
||||||
|
memAddress = shmat(shmid, 0, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (memAddress == (void *) -1)
|
if (memAddress == (void *) -1)
|
||||||
continue; /* failed: must be some other app's */
|
continue; /* failed: must be some other app's */
|
||||||
hdr = (PGShmemHeader *) memAddress;
|
hdr = (PGShmemHeader *) memAddress;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user