Home Explore Blog CI



postgresql

41th chunk of `doc/src/sgml/config.sgml`
4ed98a784a6e1df81cf3b43b950317fe2171df30514243230000000100000fa0
 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>
    

Title: I/O Configuration: io_max_concurrency, io_method and io_workers, and Worker Processes: max_worker_processes
Summary
This section outlines I/O and worker process configuration in PostgreSQL. `io_max_concurrency` determines the maximum concurrent I/O operations per process (default -1, up to 64), settable only at server start. `io_method` selects the asynchronous I/O execution method (worker, io_uring, or sync), also settable only at server start. `io_workers` sets the number of I/O worker processes (default 3). Finally, `max_worker_processes` defines the maximum background processes the cluster can support (default 8), configurable only at server start.