Re: [PING] fallocate() causes btrfs to never compress postgresql files
Dimitrios Apostolou <jimis@gmx.net>
From: Dimitrios Apostolou <jimis@gmx.net>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Tomas Vondra <tomas@vondra.me>, pgsql-hackers@lists.postgresql.org,
Andres Freund <andres@anarazel.de>,
Melanie Plageman <melanieplageman@gmail.com>,
Heikki Linnakangas <hlinnaka@iki.fi>,
Kyotaro Horiguchi <horikyota.ntt@gmail.com>,
David Rowley <dgrowleyml@gmail.com>
Date: 2025-06-12T12:41:18Z
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 →
-
Add file_extend_method=posix_fallocate,write_zeros.
- e37b59802846 16.12 landed
- 4dac22aa10d2 17.8 landed
- f94e9141a0bb 19 (unreleased) landed
- 33e3de6d77e8 18.2 landed
-
Add smgrzeroextend(), FileZero(), FileFallocate()
- 4d330a61bb19 16.0 cited
On Mon, 9 Jun 2025, Thomas Munro wrote: > On Tue, Jun 3, 2025 at 1:58 AM Dimitrios Apostolou <jimis@gmx.net> wrote: >> This sounds like the best solution IMO. People can then experiment with >> different settings and filesystems, and that way we also learn in the >> process. Thank you for the effort and patches so far. > > OK, here's a basic patch to experiment with. You can set: > > file_extend_method = fallocate,ftruncate,write > file_extend_method_threshold = 8 # (below 8 always write, 0 means never write) > I applied the patch on PostgreSQL v17 and am testing it now. I chose ftruncate method and I see ftruncate in action using strace while doing pg_restore of a big database. Nothing unexpected has happened so far. I also verified that files are being compressed, obeying Btrfs's mount option compress=zstd. Thanks for the patch! What are the odds of commiting it to v17? Dimitris