Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc?

John Naylor <johncnaylorls@gmail.com>

From: John Naylor <johncnaylorls@gmail.com>
To: Lukas Fittl <lukas@fittl.com>
Cc: Andres Freund <andres@anarazel.de>, Jakub Wartak <jakub.wartak@enterprisedb.com>, Hannu Krosing <hannuk@google.com>, Robert Haas <robertmhaas@gmail.com>, Pavel Stehule <pavel.stehule@gmail.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>, David Geier <geidav.pg@gmail.com>
Date: 2026-03-25T05:38:58Z
Lists: pgsql-hackers
On Tue, Mar 24, 2026 at 9:29 PM Lukas Fittl <lukas@fittl.com> wrote:
>
> Hi John,
>
> On Tue, Mar 24, 2026 at 3:59 AM John Naylor <johncnaylorls@gmail.com> wrote:
> > Looks good. The only thing that I would change is the single-letter
> > parameter/variable name "r". We could call it "reg" and it'd still be
> > pretty short. If you agree or have another suggestion, I can change
> > locally before pushing 0001 -- no need for a new patch set yet.
>
> Sure, I mainly felt that "exx" would be odd to keep, but "reg" sounds good.

Okay, pushed that way. I also took the liberty of moving a couple
comment changes in 0005 to here. My hope is that will reduce merge
conflicts with the AVX checksums patch, since that one also
invalidates one of those comments and it's not clear which will be
committed first.

-- 
John Naylor
Amazon Web Services



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: Show additional TSC clock source debug info

  2. instrumentation: Avoid CPUID 0x15/0x16 for Hypervisor TSC frequency

  3. pg_test_timing: Also test RDTSC[P] timing, report time source, TSC frequency

  4. Allow retrieving x86 TSC frequency/flags from CPUID

  5. instrumentation: Standardize ticks to nanosecond conversion method

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

  7. Check for __cpuidex and __get_cpuid_count separately

  8. pg_test_timing: Reduce per-loop overhead

  9. Refactor handling of x86 CPUID instructions

  10. instrumentation: Drop INSTR_TIME_SET_CURRENT_LAZY macro

  11. Rename pg_crc32c_sse42_choose.c for general purpose

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

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

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