increase the I/O size.
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.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-io-max-concurrency" xreflabel="io_max_concurrency">
<term><varname>io_max_concurrency</varname> (<type>integer</type>)
<indexterm>
<primary><varname>io_max_concurrency</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Controls the maximum number of I/O operations that one process can
execute simultaneously.
</para>
<para>
The default setting of <literal>-1</literal> selects a number based
on <xref linkend="guc-shared-buffers"/> and the maximum number of
processes (<xref linkend="guc-max-connections"/>, <xref
linkend="guc-autovacuum-worker-slots"/>, <xref
linkend="guc-max-worker-processes"/> and <xref
linkend="guc-max-wal-senders"/>), but not more than
<literal>64</literal>.
</para>
<para>
This parameter can only be set at server start.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-io-method" xreflabel="io_method">
<term><varname>io_method</varname> (<type>enum</type>)
<indexterm>
<primary><varname>io_method</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Selects the method for executing asynchronous I/O.
Possible values are:
<itemizedlist>
<listitem>
<para>
<literal>worker</literal> (execute asynchronous I/O using worker processes)
</para>
</listitem>
<listitem>
<para>
<literal>io_uring</literal> (execute asynchronous I/O using
io_uring, requires a build with
<link linkend="configure-option-with-liburing"><option>--with-liburing</option></link> /
<link linkend="configure-with-liburing-meson"><option>-Dliburing</option></link>)
</para>
</listitem>
<listitem>
<para>
<literal>sync</literal> (execute asynchronous-eligible I/O synchronously)
</para>
</listitem>
</itemizedlist>
</para>
<para>
This parameter can only be set at server start.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-io-workers" xreflabel="io_workers">
<term><varname>io_workers</varname> (<type>int</type>)
<indexterm>
<primary><varname>io_workers</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Selects the number of I/O worker processes to use. The default is
3. This parameter can only be set in the
<filename>postgresql.conf</filename> file or on the server command
line.
</para>
<para>
Only has an effect if <xref linkend="guc-io-method"/> is set to
<literal>worker</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="runtime-config-resource-worker-processes">
<title>Worker Processes</title>
<variablelist>
<varlistentry id="guc-max-worker-processes" xreflabel="max_worker_processes">
<term><varname>max_worker_processes</varname> (<type>integer</type>)
<indexterm>
<primary><varname>max_worker_processes</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Sets the maximum number of background processes that the cluster
can support. This parameter can only be set at server start. The
default is 8.
</para>
<para>