On Wed, 11 Jun 2025, Nathan Bossart wrote:
On Wed, Jun 11, 2025 at 12:32:58AM +0200, Dimitrios Apostolou wrote:
what read-seek pattern do you see on the system call level (as shown by
strace)? In pg_restore it was a constant loop of read(4K)-lseek(8-16K).
For fseeko(), sizes less than 4096 produce a repeating pattern of read()
calls followed by approximately (4096 / size) lseek() calls. For greater
sizes, it's just a stream of lseek().
This is the opposite of what the link you shared before describes, so
maybe glibc has changed its behaviour to improve performance.
Anyway, the fact that fseek(>4096) produces a stream of lseek()s, means
that most likely no I/O is happening. You need to issue a getc() after
each fseeko(), like pg_restore is doing.
Dimitris