Re: [PING] [PATCH v2] parallel pg_restore: avoid disk seeks when jumping short distance forward
Dimitrios Apostolou <jimis@gmx.net>
From: Dimitrios Apostolou <jimis@gmx.net>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@lists.postgresql.org
Date: 2025-06-10T22:32:58Z
Lists: pgsql-hackers
On Tue, 10 Jun 2025, Nathan Bossart wrote: > I also wrote a couple of test programs to show the difference between > fseeko-ing and fread-ing through a file with various sizes. On a Linux > machine, I see this: > > log2(n) | fseeko | fread > ---------+---------+------- > 1 | 109.288 | 5.528 > 2 | 54.881 | 2.848 > 3 | 27.65 | 1.504 > 4 | 13.953 | 0.834 > 5 | 7.1 | 0.49 > 6 | 3.665 | 0.322 > 7 | 1.944 | 0.244 > 8 | 1.085 | 0.201 > 9 | 0.658 | 0.185 > 10 | 0.443 | 0.175 > 11 | 0.253 | 0.171 > 12 | 0.102 | 0.162 > 13 | 0.075 | 0.13 > 14 | 0.061 | 0.114 > 15 | 0.054 | 0.1 > > So, fseeko() starts winning around 4096 bytes. On macOS, the differences > aren't quite as dramatic, but 4096 bytes is the break-even point there, > too. I imagine there's a buffer around that size somewhere... Thank you for benchmarking! Before answering in more depth, I'm curious, 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). Dimitris
Commits
-
Avoid short seeks in pg_restore.
- fba60a1b107d 19 (unreleased) landed
-
Don't rely on zlib's gzgetc() macro.
- 277dec651472 19 (unreleased) cited
-
Add more TAP test coverage for pg_dump.
- 20ec9958921a 19 (unreleased) landed
-
Split 002_pg_dump.pl into two test files.
- 9dcf7f1172cd 19 (unreleased) landed
-
Align the data block sizes of pg_dump's various compression modes.
- 66ec01dc4124 19 (unreleased) landed
-
Fix serious performance problems in LZ4Stream_read_internal.
- 1f8062dd9668 19 (unreleased) landed
-
Fix poor buffering logic in pg_dump's lz4 and zstd compression code.
- fe8192a95e6c 19 (unreleased) landed
-
Fix issue with reading zero bytes in Gzip_read.
- bf18e9bd70de 17.7 landed
- a239c4a0c226 19 (unreleased) landed
- 6a4009747c36 18.1 landed
- 1518b7d76aad 16.11 landed
-
Restore test coverage of LZ4Stream_gets().
- eac2b1697d48 17.7 landed
- 661b320ed4e0 18.1 landed
- 26d1cd375f15 19 (unreleased) landed