Re: Checkpointer write combining
Soumya S Murali <soumyamurali.work@gmail.com>
From: Soumya S Murali <soumyamurali.work@gmail.com>
To: melanieplageman@gmail.com
Cc: "li.evan.chao@gmail.com" <li.evan.chao@gmail.com>,
"byavuz81@gmail.com" <byavuz81@gmail.com>, "andres@anarazel.de" <andres@anarazel.de>, pgsql-hackers@lists.postgresql.org
Date: 2025-12-15T09:37:00Z
Lists: pgsql-hackers
Attachments
- 0001-Add-write-combining-to-checkpoint-buffer-writes.patch (text/x-patch)
Hi all, With reference to the last patches (v11) I received [1] and while reviewing Melanie’s latest feedback, I understood that PageSetBatchChecksumInplace() is currently WIP and depends on upcoming changes to hint-bit locking. It will be contrary to the flow if I propose new functional changes to checksum batching at this time. So for now I will focus on preparatory or documentation improvements until I get the updates on dependencies. Regarding my patch attached, the patch introduces write-combining during checkpoints by batching contiguous buffers and allowing them to be written using vectorized I/O. My patch includes write-combining for checkpoint buffer flushes, contiguous buffer batching, Preserved WAL ordering, locking, and buffer state invariants. The change is currently limited to the checkpointer path (BufferSync()). So far I tested my implementation and found that all the regression (233 tests) and isolation tests (121 tests) got passed, the manual pgbench validation completed successfully and also verified pg_stat_bgwriter counters before and after checkpoints. So far the implementation is stable in my system. And currently, I am focussing on the implementation of check pointer write combining for bgwriter behavior and will update it soon after validating my implementation. I hope my findings and approach will be helpful in further implementations and I would appreciate feedback on my approach. Regards, Soumya Reference: [1] https://www.postgresql.org/message-id/flat/CAAKRu_ZiEpE_EHww3S3-E3iznybdnX8mXSO7Wsuru7%3DP9Y%3DczQ%40mail.gmail.com#52e4f67645f26609427d5b1fc31fdf08