Hasty Briefsbeta

Bilingual

Waiting for Postgres 18: Accelerating Disk Reads with Asynchronous I/O

a year ago
  • #Performance
  • #Postgres
  • #Cloud
  • Postgres 18 introduces Asynchronous I/O (AIO) for read operations, a significant architectural shift aimed at improving performance, especially in cloud environments.
  • Asynchronous I/O allows Postgres to issue multiple read requests concurrently, reducing latency by not waiting for each read to complete before proceeding.
  • Postgres 18 introduces a new configuration parameter, `io_method`, with three settings: `sync` (traditional synchronous I/O), `worker` (uses dedicated I/O workers), and `io_uring` (Linux-specific, high-performance I/O interface).
  • Benchmarks on AWS show that asynchronous I/O can double read performance, with `io_uring` delivering the best results by reducing syscall overhead.
  • The `effective_io_concurrency` parameter becomes more impactful in Postgres 18, directly controlling read-ahead requests when using asynchronous I/O methods.
  • New monitoring tools like `pg_aios` view help track I/O operations in flight, especially useful with asynchronous I/O where traditional monitoring may not capture all I/O activity.
  • Asynchronous I/O changes how I/O timing is reported in `EXPLAIN ANALYZE`, potentially underreporting I/O effort, requiring adjustments in performance analysis practices.
  • Future Postgres versions may expand asynchronous I/O to include write operations, further optimizing performance for modern workloads.