Enable IO concurrency on all systems
authorAndres Freund <andres@anarazel.de>
Sun, 30 Mar 2025 23:14:55 +0000 (19:14 -0400)
committerAndres Freund <andres@anarazel.de>
Sun, 30 Mar 2025 23:16:47 +0000 (19:16 -0400)
commit2a5e709e721cf5f890cde51755b84cfe25d1c4d9
treee48d7981c9ea2c20b9da99e5f78c7173875f7c68
parentae3df4b34155d4a3811762e78d5076e64df66fba
Enable IO concurrency on all systems

Previously effective_io_concurrency and maintenance_io_concurrency could not
be set above 0 on machines without fadvise support. AIO enables IO concurrency
without such support, via io_method=worker.

Currently only subsystems using the read stream API will take advantage of
this. Other users of maintenance_io_concurrency (like recovery prefetching)
which leverage OS advice directly will not benefit from this change. In those
cases, maintenance_io_concurrency will have no effect on I/O behavior.

Author: Melanie Plageman <melanieplageman@gmail.com>
Reviewed-by: Noah Misch <noah@leadboat.com>
Discussion: http://postgr.es/m/CAAKRu_atGgZePo=_g6T3cNtfMf0QxpvoUh5OUqa_cnPdhLd=gw@mail.gmail.com
doc/src/sgml/config.sgml
doc/src/sgml/ref/alter_tablespace.sgml
doc/src/sgml/ref/create_tablespace.sgml
src/backend/access/common/reloptions.c
src/backend/commands/variable.c
src/backend/utils/misc/guc_tables.c
src/backend/utils/misc/postgresql.conf.sample
src/bin/initdb/initdb.c
src/include/storage/bufmgr.h
src/include/utils/guc_hooks.h