Обсуждение: Lock structures
Can someone explain why LockMethodCtl is in shared memory while
LockMethodTable is in postmaster memory context?
I realize LockMethodCtl has a spinlock, so it has to be in shared
memory, but couldn't it all be put in shared memory?
Also, the code:
LockShmemSize(int maxBackends)
{ int size = 0;
size += MAXALIGN(sizeof(PROC_HDR)); /* ProcGlobal */ size += MAXALIGN(maxBackends * sizeof(PROC)); /* each
MyProc*/ size += MAXALIGN(maxBackends * sizeof(LOCKMETHODCTL)); /* each
* lockMethodTable->ctl */
Is there one LOCKMETHODCTL for every backend? I thought there was only
one of them.
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Can someone explain why LockMethodCtl is in shared memory while
> LockMethodTable is in postmaster memory context?
> I realize LockMethodCtl has a spinlock, so it has to be in shared
> memory, but couldn't it all be put in shared memory?
I think the original point was not to assume that the shared-memory
pointers would be the same in each backend. Right now we don't need
that, but I see no good reason to change the data structure.
> size += MAXALIGN(maxBackends * sizeof(LOCKMETHODCTL)); /* each
> * lockMethodTable->ctl */
> Is there one LOCKMETHODCTL for every backend? I thought there was only
> one of them.
You're right, that line is erroneous; it should read
size += MAX_LOCK_METHODS * MAXALIGN(sizeof(LOCKMETHODCTL));
Not a significant error but it should be changed for clarity ...
regards, tom lane
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Tom, what about the names? There is LOCKMETHODCTL, LOCKMETHODTABLE,
> and LOCKMODES. How about LOCKSTYLESHARED, LOCKSTYLE, and leave
> LOCKMODES unchanged?
I think both of those names are worse (less descriptive) than what
we have ...
regards, tom lane
> Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Is there one LOCKMETHODCTL for every backend? I thought there was only > > one of them. > >> > >> You're right, that line is erroneous; it should read > >> > >> size += MAX_LOCK_METHODS * MAXALIGN(sizeof(LOCKMETHODCTL)); > >> > >> Not a significant error but it should be changed for clarity ... > > > I assume the fix should be done in 7.2, not 7.1, right? > > I see no reason to put it off ... > Thanks. Fix applied. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
> > Is there one LOCKMETHODCTL for every backend? I thought there was only > > one of them. > > You're right, that line is erroneous; it should read > > size += MAX_LOCK_METHODS * MAXALIGN(sizeof(LOCKMETHODCTL)); > > Not a significant error but it should be changed for clarity ... I assume the fix should be done in 7.2, not 7.1, right? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Is there one LOCKMETHODCTL for every backend? I thought there was only
> one of them.
>>
>> You're right, that line is erroneous; it should read
>>
>> size += MAX_LOCK_METHODS * MAXALIGN(sizeof(LOCKMETHODCTL));
>>
>> Not a significant error but it should be changed for clarity ...
> I assume the fix should be done in 7.2, not 7.1, right?
I see no reason to put it off ...
regards, tom lane
> Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Is there one LOCKMETHODCTL for every backend? I thought there was only > > one of them. > >> > >> You're right, that line is erroneous; it should read > >> > >> size += MAX_LOCK_METHODS * MAXALIGN(sizeof(LOCKMETHODCTL)); > >> > >> Not a significant error but it should be changed for clarity ... > > > I assume the fix should be done in 7.2, not 7.1, right? > > I see no reason to put it off ... Tom, what about the names? There is LOCKMETHODCTL, LOCKMETHODTABLE, and LOCKMODES. How about LOCKSTYLESHARED, LOCKSTYLE, and leave LOCKMODES unchanged? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026