Hi hackers, I noticed that GUCs io_combine_limit and io_max_combine_limit are marked as GUC_UNIT_BLOCKS, but in the documentation nothing is said about that. Other GUCs marked as GUC_UNIT_BLOCKS have a phrase "If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB" in their descriptions in the documentation. Please find the attached patch that adds the same phrase for io_combine_limit and io_max_combine_limit. This will need backpatching: io_combine_limit has been present since PostgreSQL 17, and io_max_combine_limit since PostgreSQL 18.
I also have a question about the main part of the description of these GUCs. It says, "Controls the largest I/O size in operations that combine I/O." From what I can see, these GUCs really only affect read operations, and this description looks misleading to me. Am I wrong? Best regards, Karina Litskevich Postgres Professional: http://postgrespro.com/
From b1d0b0f83523312d7b28759d79212ecb6a229f29 Mon Sep 17 00:00:00 2001 From: Karina Litskevich <[email protected]> Date: Wed, 8 Oct 2025 14:06:29 +0300 Subject: [PATCH v1] doc: Improve description of io_combine_limit and io_max_combine_limit --- doc/src/sgml/config.sgml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 39e658b7808..5007698671e 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -2697,6 +2697,8 @@ include_dir 'conf.d' This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line. + If this value is specified without units, it is taken as blocks, + that is <symbol>BLCKSZ</symbol> bytes, typically 8kB. The maximum possible size depends on the operating system and block size, but is typically 1MB on Unix and 128kB on Windows. The default is 128kB. @@ -2716,6 +2718,8 @@ include_dir 'conf.d' higher than the <varname>io_max_combine_limit</varname> parameter, the lower value will silently be used instead, so both may need to be raised to increase the I/O size. + If this value is specified without units, it is taken as blocks, + that is <symbol>BLCKSZ</symbol> bytes, typically 8kB. The maximum possible size depends on the operating system and block size, but is typically 1MB on Unix and 128kB on Windows. The default is 128kB. -- 2.34.1
