Improving PostgreSQL's mysterious SLRU subsystem - Thomas Munro - PGCon 2022

Improve PostgreSQL's SLRU subsystem, a mysterious and complex part of the database, with proposals for cache-friendly buffer pool design, intelligent replacement algorithms, checksums, and performance enhancements.

Key takeaways
  • Improving PostgreSQL’s SLRU subsystem involves turning SLRU into a cache-friendly buffer pool.
  • The current SLRU design can cause bugs and does not handle high contention scenarios.
  • The speaker worries about the buffer replacement policy, advocating for a more intelligent replacement algorithm.
  • The design of the main buffer pool was driven by the need to store arbitrary data, which led to complexity.
  • The SLRU subsystem has no checksums, which can make errors in the data invisible.
  • The speaker proposes implementing checksums in the buffer pool to detect and correct errors.
  • The background writer process can be slow and can cause delays in writing data to disk.
  • The speaker proposes improving the performance of the background writer.
  • The neconference track and ‘shared Nothing’ approach may be useful in improving the performance of PostgreSQL.
  • The C log is a fundamental part of the Postgres system.
  • The speaker has created a commit-fest entry and a mailing list thread to discuss improving the SLRU subsystem.
  • The issue of how to handle raw pages is still open.
  • The speaker proposes using atomix for locking, which may simplify the buffer pool locking mechanism.
  • The buffer pool should benefit from future developments in storage and I/O.