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

Reply via email to