pg_test_timing: Show additional TSC clock source debug info
Andres Freund <andres@anarazel.de>
pg_test_timing: Show additional TSC clock source debug info In some cases its necessary to understand whether TSC frequency data was sourced from CPUID, and which of the registers. Show this debug info at the end of pg_test_timing, and rework TSC functions to support that. This would have helped debug the buildfarm report fixed in 7fc36c5db550 and is likely going to aid in any TSC-related issues reported during the beta period or later. Additionally, emit a warning if TSC frequency from calibration differs by more than 10% from the TSC frequency in use, and suggest the use of timing_clock_source = 'system'. In passing, add an explicit early return in the output function if the loop count is zero. This can't happen in practice, but coverity complained because we unconditionally call output for the fast TSC measurement. Author: Lukas Fittl <lukas@fittl.com> Suggested-by: Andres Freund <andres@anarazel.de> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Haibo Yan <tristan.yim@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> (coverity fix only) Discussion: https://postgr.es/m/CAP53Pkw3Gzb+KTF5pu_o7tzbfZ7+qm2m6uDWuGtTJjZpV9yNpg@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/ref/pgtesttiming.sgml | modified | +2 −0 |
| src/bin/pg_test_timing/pg_test_timing.c | modified | +45 −10 |
| src/common/instr_time.c | modified | +56 −4 |
| src/include/portability/instr_time.h | modified | +9 −1 |
| src/include/port/pg_cpu.h | modified | +1 −1 |
| src/port/pg_cpu_x86.c | modified | +28 −3 |
| src/tools/pgindent/typedefs.list | modified | +1 −0 |
Discussion
- Reduce timing overhead of EXPLAIN ANALYZE using rdtsc? 172 messages · 2020-06-12 → 2026-05-16