Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc?

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: David Geier <geidav.pg@gmail.com>
Cc: Lukas Fittl <lukas@fittl.com>, Pavel Stehule <pavel.stehule@gmail.com>, Tomas Vondra <tomas.vondra@enterprisedb.com>, vignesh C <vignesh21@gmail.com>, Michael Paquier <michael@paquier.xyz>, Ibrar Ahmed <ibrar.ahmad@gmail.com>, Maciek Sakrejda <m.sakrejda@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-10-22T13:32:03Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. pg_test_timing: Also test RDTSC[P] timing, report time source, TSC frequency

  2. Allow retrieving x86 TSC frequency/flags from CPUID

  3. instrumentation: Standardize ticks to nanosecond conversion method

  4. instrumentation: Use Time-Stamp Counter on x86-64 to lower overhead

  5. Zero initialize uses of instr_time about to trigger compiler warnings

  6. instr_time: Represent time as an int64 on all platforms

  7. Add 250c8ee07ed to git-blame-ignore-revs

Hi,

On 2025-09-01 12:36:24 +0200, David Geier wrote:
> > Open questions I have:
> > - Could we rely on checking whether the TSC timesource is invariant (via
> > CPUID), instead of relying on Linux choosing it as a clocksource?
> 
> Why do you want to do that? Are you concerned that Linux might pick a
> different clock source even though invariant TSC is available?

Not sure about Lukas, but I'm slightly concerned about making this a linux
specific mechanism unnecessarily.


> We could code our own check but looking at the Linux kernel code, this
> is a bit more involved if we want to do it completely right. They check
> e.g. if the TSC is also synchronized across different CPUs, which is not
> the case if they're on different chassis (see unsynchronized_tsc() ->
> apic_is_clustered_box()).

I think Linux has higher fidelity requirements than our instrumentation usage
- with linux an inaccurate clock would lead to broken timers, wrong wall clock
etc, whereas for us it's just a skewed instrumentation result.

Greetings,

Andres Freund