Schedule - PostgreSQL Development Conference 2024

Streaming I/O and vectored I/O

Date: 2024-05-29
Time: 09:00–09:50
Room: Fletcher(1900)
Level: Advanced
Feedback: Leave feedback

Streaming I/O and vectored I/O

Traditionally, PostgreSQL did all relation I/O as sequential 8KB pread() or pwrite() system calls. This talk is about a new "streaming" programming model that allows multiple blocks to be read or written at the same time, and eventually in the background ahead of time.

I will talk about several things that cover recent and ongoing commits:

  • overview of system file I/O interfaces
  • storage manager changes for multi-buffer operations
  • buffer manager changes for multi-buffer operations
  • the stream abstraction
  • "synchronous" streaming I/O
  • partial steps to asynchronous I/O
  • use cases (heap/index scans, vacuum, recovery, ...)

This corresponds to commitfest entry https://commitfest.postgresql.org/46/4532/ (and earlier related work).

I will also talk more briefly about some aspects of the next stages of the larger AIO project:

  • overview of kernel buffering, pros, cons and motivations for escaping from it
  • why asynchronous I/O and direct I/O go together
  • a peek at WIP asynchronous I/O system
  • asynchronous streaming I/O

Speaker

Thomas Munro