|From:||Ildus Kurbangaliev <i(dot)kurbangaliev(at)postgrespro(dot)ru>|
|To:||Robert Haas <robertmhaas(at)gmail(dot)com>|
|Cc:||Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, "andres(at)anarazel(dot)de" <andres(at)anarazel(dot)de>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>|
|Subject:||Re: [PATCH] Refactoring of LWLock tranches|
|Views:||Raw Message | Whole Thread | Download mbox|
On Mon, 16 Nov 2015 18:55:55 -0500
Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Mon, Nov 16, 2015 at 7:32 AM, Ildus Kurbangaliev
> <i(dot)kurbangaliev(at)postgrespro(dot)ru> wrote:
> > What if just create a control struct in shared memory like in other places? BufferDescriptors
> > and BufferBlocks can be kept there along with tranches definitions
> > and lwlocks. Buffer locks that are located in MainLWLockArray by offset
> > can be moved there too.
> Yeah, we could do that, but what's the advantage of it? The alignment
> of the buffer descriptors is kinda finnicky and matters to
> performance, so it seems better not to prefix them with something that
> might perturb it. If we just rebase Andres' patch over what I just
> committed and add in something so that the buffer numbers are fed from
> #defines or an enum instead of being random integers, I think we're
I created a little patch on top of Andres' patch as example.
I see several advantages:
1) We can avoid constants, and use a standard steps for tranches
2) We have only one global variable (BufferCtl)
3) Tranches moved to shared memory, so we won't need to do
an additional work here.
4) Also we can kept buffer locks from MainLWLockArray there (that was done
in attached patch).
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company
|Next Message||Amit Kapila||2015-11-17 11:27:20||Re: Speed up Clog Access by increasing CLOG buffers|
|Previous Message||Kyotaro HORIGUCHI||2015-11-17 10:52:32||Re: Support for N synchronous standby servers - take 2|