提交 4347cc23 编写于 作者: T Tom Lane

Allow background writing to be shut down by setting limit values to zero.

This does not disable the bgwriter process: it still has to wake up often
enough to collect fsync requests from backends in a timely fashion.  But
it responds to the recent gripe about not being able to prevent the disk
from being spun up constantly.
上级 bdbe9c9f
<!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.288 2004/10/15 16:50:29 momjian Exp $
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.289 2004/10/17 22:01:49 tgl Exp $
-->
<Chapter Id="runtime">
......@@ -1305,7 +1305,9 @@ SET ENABLE_SEQSCAN TO OFF;
<varname>bgwriter_maxpages</varname> reduce the extra I/O load
caused by the background writer, but leave more work to be done
at checkpoint time. To reduce load spikes at checkpoints,
increase the values.
increase the values. To disable background writing entirely,
set <varname>bgwriter_percent</varname> and/or
<varname>bgwriter_maxpages</varname> to zero.
</para>
</sect3>
......
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.180 2004/10/16 18:57:23 tgl Exp $
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.181 2004/10/17 22:01:50 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -671,8 +671,10 @@ UnpinBuffer(BufferDesc *buf, bool fixOwner)
*
* This is called at checkpoint time to write out all dirty shared buffers,
* and by the background writer process to write out some of the dirty blocks.
* percent/maxpages should be zero in the former case, and nonzero limit
* values in the latter.
* percent/maxpages should be -1 in the former case, and limit values (>= 0)
* in the latter.
*
* Returns the number of buffers written.
*/
int
BufferSync(int percent, int maxpages)
......@@ -682,6 +684,10 @@ BufferSync(int percent, int maxpages)
int num_buffer_dirty;
int i;
/* If either limit is zero then we are disabled from doing anything... */
if (percent == 0 || maxpages == 0)
return 0;
/*
* Get a list of all currently dirty buffers and how many there are.
* We do not flush buffers that get dirtied after we started. They
......
......@@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.244 2004/10/16 19:08:38 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.245 2004/10/17 22:01:51 tgl Exp $
*
*--------------------------------------------------------------------
*/
......@@ -1248,7 +1248,7 @@ static struct config_int ConfigureNamesInt[] =
NULL
},
&BgWriterDelay,
200, 10, 5000, NULL, NULL
200, 10, 10000, NULL, NULL
},
{
......@@ -1257,7 +1257,7 @@ static struct config_int ConfigureNamesInt[] =
NULL
},
&BgWriterPercent,
1, 1, 100, NULL, NULL
1, 0, 100, NULL, NULL
},
{
......@@ -1266,7 +1266,7 @@ static struct config_int ConfigureNamesInt[] =
NULL
},
&BgWriterMaxPages,
100, 1, 1000, NULL, NULL
100, 0, 1000, NULL, NULL
},
{
......
......@@ -98,9 +98,9 @@
# - Background writer -
#bgwriter_delay = 200 # 10-5000 milliseconds
#bgwriter_percent = 1 # 1-100% of dirty buffers
#bgwriter_maxpages = 100 # 1-1000 buffers max at once
#bgwriter_delay = 200 # 10-10000 milliseconds between rounds
#bgwriter_percent = 1 # 0-100% of dirty buffers in each round
#bgwriter_maxpages = 100 # 0-1000 buffers max per round
#---------------------------------------------------------------------------
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册