Commit 1e985720 authored by Tom Lane's avatar Tom Lane

Improve description of bgwriter_lru_multiplier, per discussion.

parent 716e8b83
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.160 2007/12/11 20:07:31 alvherre Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.161 2008/01/21 03:28:42 tgl Exp $ -->
<chapter Id="runtime-config"> <chapter Id="runtime-config">
<title>Server Configuration</title> <title>Server Configuration</title>
...@@ -1192,17 +1192,16 @@ SET ENABLE_SEQSCAN TO OFF; ...@@ -1192,17 +1192,16 @@ SET ENABLE_SEQSCAN TO OFF;
<title>Background Writer</title> <title>Background Writer</title>
<para> <para>
Beginning in <productname>PostgreSQL</> 8.0, there is a separate server There is a separate server
process called the <firstterm>background writer</>, whose function process called the <firstterm>background writer</>, whose function
is to issue writes of <quote>dirty</> shared buffers. The intent is is to issue writes of <quote>dirty</> shared buffers. The intent is
that server processes handling user queries should seldom or never have that server processes handling user queries should seldom or never have
to wait for a write to occur, because the background writer will do it. to wait for a write to occur, because the background writer will do it.
However there is a net overall However there is a net overall
increase in I/O load, because where a repeatedly-dirtied page might increase in I/O load, because a repeatedly-dirtied page might
before have been written only once per checkpoint interval, the otherwise be written only once per checkpoint interval, but the
background writer might write it several times in the same interval. background writer might write it several times in the same interval.
In most situations a continuous low load is preferable to periodic The parameters discussed in this subsection can be used to
spikes, but the parameters discussed in this subsection can be used to
tune the behavior for local needs. tune the behavior for local needs.
</para> </para>
...@@ -1253,12 +1252,14 @@ SET ENABLE_SEQSCAN TO OFF; ...@@ -1253,12 +1252,14 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm> </indexterm>
<listitem> <listitem>
<para> <para>
Unless limited by <varname>bgwriter_lru_maxpages</>, the number The number of dirty buffers written in each round is based on the
of dirty buffers written in each round is determined by reference number of new buffers that have been needed by server processes
to the number of new buffers that have been needed by server during recent rounds. The average recent need is multiplied by
processes during recent rounds. This number is multiplied by <varname>bgwriter_lru_multiplier</> to arrive at an estimate of the
<varname>bgwriter_lru_multiplier</> to arrive at the estimate number of buffers that will be needed during the next round. Dirty
of the number of buffers that will be needed during the next round. buffers are written until there are that many clean, reusable buffers
available. (However, no more than <varname>bgwriter_lru_maxpages</>
buffers will be written per round.)
Thus, a setting of 1.0 represents a <quote>just in time</> policy Thus, a setting of 1.0 represents a <quote>just in time</> policy
of writing exactly the number of buffers predicted to be needed. of writing exactly the number of buffers predicted to be needed.
Larger values provide some cushion against spikes in demand, Larger values provide some cushion against spikes in demand,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment