The PostgreSQL open-source database server has been on an exciting spree of recent changes… IO_uring support was recently merged for PostgreSQL 18 along with AVX-512 acceleration of CRC32 computations for up to a 3x improvement. Merged today to PostgreSQL is initial support for NUMA awareness for helping with the PostgreSQL performance for multi-node/socket servers.
Merged to PostgreSQL Git ahead of the PostgreSQL 18.0 release due out in September is basic NUMA awareness. If build with the “–with-libnuma” configuration option is initial Linux-only NUMA awareness. NUMA awareness for other operating systems may be added later.
As noted in the discussion over the NUMA-awareness support for PostgreSQL, the work was based on this PGConf EU presentation last year by prominent Microsoft engineer Andres Freund.
For multi-socket servers especially, this NUMA awareness should be able to help in lowering latency — very significant improvements are possible. It can also help with carrying out datbase I/O on a NUMA node closer to PCIe-attached storage or better handling around CXL memory.
Following that basic NUMA awareness being added for PostgreSQL, some follow-up work has landed for pg_shmem_allocations_numa for information on how shared memory is distributed across NUMA nodes and pg_buffercache_numa for individual buffer information across NUMA memory nodes.
It will be interesting to see how well tuned this NUMA awareness can be made ahead of the PostgreSQL 18 release due out later in the year. In any event it’s finally exciting seeing NUMA awareness support reaching the mainline open-source PostgreSQL database server.