Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc?

From: David Geier <geidav(dot)pg(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>, Lukas Fittl <lukas(at)fittl(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, Ibrar Ahmed <ibrar(dot)ahmad(at)gmail(dot)com>, Maciek Sakrejda <m(dot)sakrejda(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc?
Date: 2025-12-03 11:03:25
Message-ID: c84b9cd8-1e1d-4d1c-991b-2063331f1385@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 19.11.2025 20:36, Robert Haas wrote:
> On Wed, Nov 19, 2025 at 11:55 AM Lukas Fittl <lukas(at)fittl(dot)com> wrote:
>> Overall, I'm still thinking a GUC might be the way to go, but I don't think anyone else was enthusiastic about that idea :)
>
> Reliable feature auto-detection is the best option, but if that's not
> possible, I think the choices are add a GUC or give up on the project
> altogether. Using a GUC to deal with platform dependencies is a pretty
> reasonable concept -- see, e.g. dynamic_shared_memory_type or
> huge_pages or io_method. If we can't autodetect it reliably and we
> aren't willing to add a GUC, we're basically saying there's not enough
> value here to justify adding a configuration parameter. That's often a
> totally reasonable conclusion -- it can easily happen that the
> benefits of a platform-specific optimization are too small to make it
> worth configuring. But I would have thought that in this case the
> benefits might be quite large.

I'm also in favor of adding a GUC. Even if we could 100% reliably detect
if using TSC is giving correct results, it could be that it's slow in
some virtualized environment and hence the user wants to disable it.

I'm wondering how to best do a GUC for something that is potentially
unavailable on the system. In that case the GUC would be superfluous.
Maybe a boolean "enable_try_fast_clocksource" GUC or a "clocksource"
enum GUC which can be "default" and "try_rdtsc", where we only include
the "try_rdtsc" enum value on x86 systems?

Any other ideas?

--
David Geier

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bertrand Drouvot 2025-12-03 11:17:43 Re: Safer hash table initialization macro
Previous Message Zhijie Hou (Fujitsu) 2025-12-03 10:57:03 RE: Fix START_REPLICATION failure with publication names containing backslashes