Documentation for vacuum_cost config options.
authorJan Wieck <[email protected]>
Fri, 13 Feb 2004 12:25:09 +0000 (12:25 +0000)
committerJan Wieck <[email protected]>
Fri, 13 Feb 2004 12:25:09 +0000 (12:25 +0000)
Jan

doc/src/sgml/runtime.sgml

index 71d7f0621c8dc75343faad5a1c53ce039d037129..67e8931273a87564d21e0c50c7e1c1283bfbc2e8 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.236 2004/02/03 17:34:02 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.237 2004/02/13 12:25:09 wieck Exp $
 -->
 
 <Chapter Id="runtime">
@@ -990,6 +990,87 @@ SET ENABLE_SEQSCAN TO OFF;
 
      </variablelist>
     </sect3>
+
+    <sect3 id="runtime-config-resource-vacuum-cost">
+     <title>Cost Based Vacuum Delay</title>
+
+     <variablelist>
+     <varlistentry>
+      <term><varname>vacuum_cost_page_hit</varname> (<type>integer</type>)</term>
+      <listitem>
+       <para>
+       During a default <command>VACUUM</command> (not
+       <command>FULL</command>) the system maintains and internal counter
+       accumulating the cost of various operations performed. When the
+       accumulated cost reaches a limit, the backend performing the
+       <command>VACUUM</command> will sleep for a while, reset the
+       accumulator and continue. The intention is to lower the IO impact
+       of <command>VACUUM</command>.
+      </para>
+
+      <para>
+       The variable <varname>vacuum_cost_page_hit</varname> is the cost
+       for vacuuming a buffer found inside the shared buffer cache. 
+       It represents the cost to lock the buffer pool, lookup the 
+       shared hash table and to actually scan the block content.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><varname>vacuum_cost_page_miss</varname> (<type>integer</type>)</term>
+      <listitem>
+       <para>
+       The cost for vacuuming a buffer that has to be read from disk.
+       This represents the effort to lock the buffer pool, lookup the
+       cache directory, reading the block from disk and scanning the
+       content.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><varname>vacuum_cost_page_dirty</varname> (<type>integer</type>)</term>
+      <listitem>
+       <para>
+       This extra cost is added when vacuum modifies a block that was
+       clean before. It represents the extra IO required to flush the
+       dirty block out to disk again.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><varname>vacuum_cost_limit</varname> (<type>integer</type>)</term>
+      <listitem>
+       <para>
+       This is the cost limit that must be reached or exceeded before
+       the <command>VACUUM</command> will nap.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><varname>vacuum_cost_naptime</varname> (<type>integer</type>)</term>
+      <listitem>
+       <para>
+       The time im milliseconds the <command>VACUUM</command> will
+       nap when the cost limit has been reached or exceeded.
+       There are certain bulk operations that hold critical
+       locks and should therefore perform
+       as quickly as possible. Because of that it is possible that the
+       cost actually accumulates far higher than this limit. To compensate
+       for this, the final naptime is calculated as
+       <varname>vacuum_cost_naptime</varname> * 
+       <varname>accumulated_balance</varname> /
+       <varname>vacuum_cost_limit</varname> with a maximum of
+       <varname>vacuum_cost_naptime</varname> * 4.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     </variablelist>
+    </sect3>
    </sect2>
 
    <sect2 id="runtime-config-wal">