Re: pgsql: Simplify LWLock tranche machinery by removing array_base/array_s

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Robert Haas <rhaas(at)postgresql(dot)org>
Cc: "pgsql-committers(at)postgresql(dot)org" <pgsql-committers(at)postgresql(dot)org>
Subject: Re: pgsql: Simplify LWLock tranche machinery by removing array_base/array_s
Date: 2016-12-21 07:14:12
Message-ID: CAFj8pRAHFYA1EFphsK1eOpa=ED34P-mXbFWCKxnJqWc4zqaxtA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

Hi

Is there some help for extensions developers, how to fix extensions after
this change?

Orafce hits this change.

Regards

Pavel

2016-12-16 17:41 GMT+01:00 Robert Haas <rhaas(at)postgresql(dot)org>:

> Simplify LWLock tranche machinery by removing array_base/array_stride.
>
> array_base and array_stride were added so that we could identify the
> offset of an LWLock within a tranche, but this facility is only very
> marginally used apart from the main tranche. So, give every lock in
> the main tranche its own tranche ID and get rid of array_base,
> array_stride, and all that's attached. For debugging facilities
> (Trace_lwlocks and LWLOCK_STATS) print the pointer address of the
> LWLock using %p instead of the offset. This is arguably more useful,
> and certainly a lot cheaper. Drop the offset-within-tranche from
> the information reported to dtrace and from one can't-happen message
> inside lwlock.c.
>
> The main user-visible impact of this change is that pg_stat_activity
> will now report all waits for LWLocks as "LWLock" rather than
> reporting some as "LWLockTranche" and others as "LWLockNamed".
>
> The main motivation for this change is that the need to specify an
> array_base and an array_stride is awkward for parallel query. There
> is only a very limited supply of tranche IDs so we can't just keep
> allocating new ones, and if we try to use the same tranche IDs every
> time then we run into trouble when multiple parallel contexts are
> use simultaneously. So if we didn't get rid of this mechanism we'd
> have to make it even more complicated. By simplifying it in this
> way, we instead reduce the size of the generated code for lwlock.c
> by about 5%.
>
> Discussion: http://postgr.es/m/CA+TgmoYsFn6NUW1x0AZtupJGUAs1UDY4
> dJtCN47_Q6D0sP80PA(at)mail(dot)gmail(dot)com
>
> Branch
> ------
> master
>
> Details
> -------
> http://git.postgresql.org/pg/commitdiff/3761fe3c20bb040b15f0e8da58d824
> 631da00caa
>
> Modified Files
> --------------
> doc/src/sgml/monitoring.sgml | 52 ++++-----
> src/backend/access/transam/slru.c | 6 +-
> src/backend/access/transam/xlog.c | 9 +-
> src/backend/postmaster/pgstat.c | 10 +-
> src/backend/replication/logical/origin.c | 8 +-
> src/backend/replication/slot.c | 8 +-
> src/backend/storage/buffer/buf_init.c | 16 +--
> src/backend/storage/ipc/procarray.c | 9 +-
> src/backend/storage/lmgr/lwlock.c | 175
> ++++++++++---------------------
> src/backend/utils/mmgr/dsa.c | 15 +--
> src/backend/utils/probes.d | 16 +--
> src/include/access/slru.h | 1 -
> src/include/pgstat.h | 3 +-
> src/include/storage/lwlock.h | 45 ++------
> 14 files changed, 112 insertions(+), 261 deletions(-)
>
>
> --
> Sent via pgsql-committers mailing list (pgsql-committers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers
>

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Fujii Masao 2016-12-21 11:27:53 pgsql: Forbid invalid combination of options in pg_basebackup.
Previous Message Tom Lane 2016-12-21 00:22:08 pgsql: Fix minor oversights in nodeAgg.c.

Browse pgsql-hackers by date

  From Date Subject
Next Message Ants Aasma 2016-12-21 07:40:09 Re: Replication slot xmin is not reset if HS feedback is turned off while standby is shut down
Previous Message Pavel Stehule 2016-12-21 06:59:38 Re: too low cost of Bitmap index scan