It seems to me that we're allocating shared memory for SLRU lwlocks twice,
unless I'm missing something.
I think you are right.
Did you check previous versions? i.e. should it be applyed to previous
branches?? I suppose yes, to minimize code difference.
Also I'd like an idea to add Assert(offset <= SimpleLruShmemSize(nslots, nlsns))
at the end of SimpleLruInit()
SimpleLruShmemSize() calculates total SLRU shared memory size including lwlocks
size.
SimpleLruInit() starts with line
shared = (SlruShared) ShmemInitStruct(name,
SimpleLruShmemSize(nslots, nlsns),
&found);
which allocates SLRU shared memory (LWLocks size is included because
SimpleLruShmemSize() is used for size computation).
Following line allocates shared memory for LWLocks again:
shared->buffer_locks = (LWLockPadded *) ShmemAlloc(sizeof(LWLockPadded) *
nslots);
Attached patch fixes that by removing extra ShmemAlloc for SLRU.
------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
--
Teodor Sigaev E-mail: [email protected]
WWW: http://www.sigaev.ru/
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers