Re: BUG #16109: Postgres planning time is high across version (Expose buffer usage during planning in EXPLAIN)

From: Julien Rouhaud <rjuju123(at)gmail(dot)com>
To: Justin Pryzby <pryzby(at)telsasoft(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #16109: Postgres planning time is high across version (Expose buffer usage during planning in EXPLAIN)
Date: 2020-01-29 11:15:59
Message-ID: CAOBaU_YAN6PW4perkROgXWtRmDNX8tvKwjgDpsR6wYetEUahGQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On Fri, Jan 24, 2020 at 10:06 PM Julien Rouhaud <rjuju123(at)gmail(dot)com> wrote:
>
> On Fri, Jan 24, 2020 at 6:55 AM Justin Pryzby <pryzby(at)telsasoft(dot)com> wrote:
> >
> > On Wed, Nov 13, 2019 at 11:39:04AM +0100, Julien Rouhaud wrote:
> > > (moved to -hackers)
> > >
> > > On Tue, Nov 12, 2019 at 9:55 PM Andres Freund <andres(at)anarazel(dot)de> wrote:
> > > >
> > > > This last point is more oriented towards other PG developers: I wonder
> > > > if we ought to display buffer statistics for plan time, for EXPLAIN
> > > > (BUFFERS). That'd surely make it easier to discern cases where we
> > > > e.g. access the index and scan a lot of the index from cases where we
> > > > hit some CPU time issue. We should easily be able to get that data, I
> > > > think, we already maintain it, we'd just need to compute the diff
> > > > between pgBufferUsage before / after planning.
> > >
> > > That would be quite interesting to have. I attach as a reference a
> > > quick POC patch to implement it:
> >
> > +1
> >
> > + result.shared_blks_hit = stop->shared_blks_hit - start->shared_blks_hit;
> > + result.shared_blks_read = stop->shared_blks_read - start->shared_blks_read;
> > + result.shared_blks_dirtied = stop->shared_blks_dirtied -
> > + start->shared_blks_dirtied;
> > [...]
> >
> > I think it would be more readable and maintainable using a macro:
> >
> > #define CALC_BUFF_DIFF(x) result.##x = stop->##x - start->##x
> > CALC_BUFF_DIFF(shared_blks_hit);
> > CALC_BUFF_DIFF(shared_blks_read);
> > CALC_BUFF_DIFF(shared_blks_dirtied);
> > ...
> > #undefine CALC_BUFF_DIFF
>
> Good idea. Note that you can't use preprocessor concatenation to
> generate something else than a token or a number, so the ## can just
> be removed here.

Rebase due to conflict with 3ec20c7091e97.

Attachment Content-Type Size
show_planning_buffers-v3.diff application/octet-stream 19.4 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message M Rehman Kahloon 2020-01-29 12:22:15 Segmentation Fault (Logical Replication)
Previous Message Oleksii Kliukin 2020-01-29 09:20:30 Re: postgres crash on concurrent update of inheritance partitioned table

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2020-01-29 11:38:52 Re: Autovacuum on partitioned table
Previous Message Kasahara Tatsuhito 2020-01-29 11:06:06 Re: Tid scan increments value of pg_stat_all_tables.seq_scan. (but not seq_tup_read)