You can check the code in guc.c, search "bgwriter_delay", &BgWriterDelay<br>In the global user configuration, it can change the value of BgWriterDelay.<br>Since the BgWriterDelay declared in bgwriter.h as extern. It can be changed in the global namespace.<br><br><div><div style="color:#909090;font-family:Arial Narrow;font-size:12px">------------------</div><div style="font-size:14px;font-family:Verdana;color:#000;"><div><div style="font-family: 'lucida Grande', Verdana; font-size: 12px; line-height: 18px; ">Thanks&Regards,</div><div style="font-family: 'lucida Grande', Verdana; font-size: 12px; line-height: 18px; ">Xiong He<br><br></div></div></div></div><div> </div><div><includetail><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "高健"<luckyjackgao(at)gmail(dot)com>;</div><div><b>Date: </b> Mon, Oct 29, 2012 03:17 PM</div><div><b>To: </b> "pgsql-general"<pgsql-general(at)postgresql(dot)org>; <wbr></div><div></div><div><b>Subject: </b> [GENERAL] Why BgWriterDelay is fixed?</div></div><div><br></div>In src/backend/postmaster/bgwriter.c , I can find the following source code(PostgreSQL9.2):<div><br></div><div><div><br></div><div>/*</div><div> * GUC parameters</div><div> */</div><div>int<span class="Apple-tab-span" style="white-space:pre"> </span>BgWriterDelay = 200;</div>
</div><div><br></div><div>...</div><div><div><span class="Apple-tab-span" style="white-space:pre"> </span>rc = WaitLatch(&MyProc->procLatch,</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH,</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> BgWriterDelay /* ms */ );</div></div><div>...</div><div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate)</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>/* Ask for notification at next buffer allocation */</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>StrategyNotifyBgWriter(&MyProc->procLatch);</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>/* Sleep ... */</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>rc = WaitLatch(&MyProc->procLatch,</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH,</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> BgWriterDelay * HIBERNATE_FACTOR);</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>/* Reset the notification request in case we timed out */</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>StrategyNotifyBgWriter(NULL);</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div></div><div><br></div><div>But I also found the following in postgresql.conf:</div>
<div><div>#bgwriter_delay = 200ms # 10-10000ms between rounds</div></div><div>It is now comment .</div><div>But according to the fixed code of BgWriterDelay = 200, even when I update bgwriter_delay in postgresql.conf to a different value(eg 300ms), </div>
<div>how can it ovewrite the fixed 200ms in bgwriter.c ?</div><div><br></div><div>I also want to know, if it is not a bug, then what is the reason?</div></includetail></div>