Re: [Proposal] Add accumulated statistics for wait event - Mailing list pgsql-hackers

From Andres Freund
Subject Re: [Proposal] Add accumulated statistics for wait event
Date
Msg-id 20210614183159.m4pdxwmkqon5sxhb@alap3.anarazel.de
Whole thread Raw
In response to Re: [Proposal] Add accumulated statistics for wait event  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
Hi,

On 2021-06-14 11:27:21 -0700, Andres Freund wrote:
> On 2021-06-14 16:10:32 +0200, Jehan-Guillaume de Rorthais wrote:
> > In the patch in attachment, I tried to fix this by using kind of an internal
> > hook for pgstat_report_wait_start and pgstat_report_wait_end. This allows to
> > "instrument" wait events only when required, on the fly, dynamically.
> 
> That's *far worse*. You're adding an indirect function call. Which requires
> loading a global variable and then a far call to a different function. You're
> changing a path that's ~2 instructions with minimal dependencies (and no
> branches (i.e. fully out of order executable) to something on the order of ~15
> instructions with plenty dependencies and at least two branches (call, ret).

In the case at hand it might even be worse, because the external function call
will require registers to be spilled for the function call. Right now wait
events "use" two register (one for the wait event, one for my_wait_event_info),
but otherwise don't cause additional spilling. With your change you'd see
register spill/reload around both wait start and end.

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: [Proposal] Add accumulated statistics for wait event
Next
From: Bruce Momjian
Date:
Subject: Re: PG 14 release notes, first draft