mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
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.
This commit is contained in:
parent
bdbe9c9f06
commit
4347cc2392
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$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">
|
<Chapter Id="runtime">
|
||||||
@ -1305,7 +1305,9 @@ SET ENABLE_SEQSCAN TO OFF;
|
|||||||
<varname>bgwriter_maxpages</varname> reduce the extra I/O load
|
<varname>bgwriter_maxpages</varname> reduce the extra I/O load
|
||||||
caused by the background writer, but leave more work to be done
|
caused by the background writer, but leave more work to be done
|
||||||
at checkpoint time. To reduce load spikes at checkpoints,
|
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>
|
</para>
|
||||||
</sect3>
|
</sect3>
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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,
|
* 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.
|
* 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
|
* percent/maxpages should be -1 in the former case, and limit values (>= 0)
|
||||||
* values in the latter.
|
* in the latter.
|
||||||
|
*
|
||||||
|
* Returns the number of buffers written.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
BufferSync(int percent, int maxpages)
|
BufferSync(int percent, int maxpages)
|
||||||
@ -682,6 +684,10 @@ BufferSync(int percent, int maxpages)
|
|||||||
int num_buffer_dirty;
|
int num_buffer_dirty;
|
||||||
int i;
|
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.
|
* 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
|
* We do not flush buffers that get dirtied after we started. They
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
NULL
|
||||||
},
|
},
|
||||||
&BgWriterDelay,
|
&BgWriterDelay,
|
||||||
200, 10, 5000, NULL, NULL
|
200, 10, 10000, NULL, NULL
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1257,7 +1257,7 @@ static struct config_int ConfigureNamesInt[] =
|
|||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
&BgWriterPercent,
|
&BgWriterPercent,
|
||||||
1, 1, 100, NULL, NULL
|
1, 0, 100, NULL, NULL
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1266,7 +1266,7 @@ static struct config_int ConfigureNamesInt[] =
|
|||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
&BgWriterMaxPages,
|
&BgWriterMaxPages,
|
||||||
100, 1, 1000, NULL, NULL
|
100, 0, 1000, NULL, NULL
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -98,9 +98,9 @@
|
|||||||
|
|
||||||
# - Background writer -
|
# - Background writer -
|
||||||
|
|
||||||
#bgwriter_delay = 200 # 10-5000 milliseconds
|
#bgwriter_delay = 200 # 10-10000 milliseconds between rounds
|
||||||
#bgwriter_percent = 1 # 1-100% of dirty buffers
|
#bgwriter_percent = 1 # 0-100% of dirty buffers in each round
|
||||||
#bgwriter_maxpages = 100 # 1-1000 buffers max at once
|
#bgwriter_maxpages = 100 # 0-1000 buffers max per round
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user