From: | "Jafri, Nazneen" <nazjafri(at)amazon(dot)com> |
---|---|
To: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | PostgreSQL 18 Beta 1 io_max_concurrency |
Date: | 2025-05-14 15:38:03 |
Message-ID: | 4739FC06-CD5A-4CF6-9133-A13C5FFAB0E1@amazon.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello,
The default setting of parameter io_max_concurrency shows 64 whereas the documentation says -1, checking if this is the expected behavior.
PG 18 documentation says:
The default setting of -1 selects a number based on shared_buffers<https://www.postgresql.org/docs/18/runtime-config-resource.html#GUC-SHARED-BUFFERS> and the maximum number of processes (max_connections<https://www.postgresql.org/docs/18/runtime-config-connection.html#GUC-MAX-CONNECTIONS>, autovacuum_worker_slots<https://www.postgresql.org/docs/18/runtime-config-vacuum.html#GUC-AUTOVACUUM-WORKER-SLOTS>, max_worker_processes<https://www.postgresql.org/docs/18/runtime-config-resource.html#GUC-MAX-WORKER-PROCESSES> and max_wal_senders<https://www.postgresql.org/docs/18/runtime-config-replication.html#GUC-MAX-WAL-SENDERS>), but not more than 64.
https://www.postgresql.org/docs/18/runtime-config-resource.html#GUC-IO-MAX-CONCURRENCY
postgresql.conf (also says -1)
#io_max_concurrency = -1 # Max number of IOs that one process
# can execute simultaneously
# -1 sets based on shared_buffers # (change requires restart)
But the default setting in the database instance is 64
postgres=# show io_max_concurrency;
io_max_concurrency
--------------------
64
(1 row)
Even after explicitly changing to -1 and restart, the setting is not getting reflected, is there any other dependency we could be missing?
postgres=# alter system set io_max_concurrency=-1;
ALTER SYSTEM
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
[postgres]$ psql
psql (18beta1)
Type "help" for help.
postgres=# show io_max_concurrency;
io_max_concurrency
--------------------
64
(1 row)
Interestingly, it accepts values besides -1, including unexpected ones like 100/200 (contrary to the documentation max 64).
postgres=# show io_max_concurrency;
io_max_concurrency
--------------------
100
(1 row)
postgres=# alter system set io_max_concurrency=200;
ALTER SYSTEM
postgres=#
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
[postgres]$ psql
psql (18beta1)
Type "help" for help.
postgres=# show io_max_concurrency;
io_max_concurrency
--------------------
200
(1 row)
Thank you,
Nazneen
From | Date | Subject | |
---|---|---|---|
Next Message | Álvaro Herrera | 2025-05-14 15:51:33 | Re: Disable parallel query by default |
Previous Message | Florents Tselai | 2025-05-14 15:33:18 | Re: PATCH: jsonpath string methods: lower, upper, initcap, l/r/btrim, replace, split_part |