Search Postgresql Archives

Re: Why BgWriterDelay is fixed?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You can check the code in guc.c,  search "bgwriter_delay",  &BgWriterDelay
In the global user configuration, it can change the value of BgWriterDelay.
Since the BgWriterDelay declared in bgwriter.h as extern.  It can be changed in the global namespace.

------------------
Thanks&Regards,
Xiong He

 


------------------ Original ------------------
From:  "高健"<luckyjackgao@xxxxxxxxx>;
Date:  Mon, Oct 29, 2012 03:17 PM
To:  "pgsql-general"<pgsql-general@xxxxxxxxxxxxxx>;
Subject:  [GENERAL] Why BgWriterDelay is fixed?

In src/backend/postmaster/bgwriter.c , I can find the following source code(PostgreSQL9.2):


/*
 * GUC parameters
 */
int BgWriterDelay = 200;

...
rc = WaitLatch(&MyProc->procLatch,
  WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH,
  BgWriterDelay /* ms */ );
...
if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate)
{
/* Ask for notification at next buffer allocation */
StrategyNotifyBgWriter(&MyProc->procLatch);
/* Sleep ... */
rc = WaitLatch(&MyProc->procLatch,
  WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH,
  BgWriterDelay * HIBERNATE_FACTOR);
/* Reset the notification request in case we timed out */
StrategyNotifyBgWriter(NULL);
}

But I also found  the following in postgresql.conf:
#bgwriter_delay = 200ms                 # 10-10000ms between rounds
It is now comment .
But according to the fixed code of  BgWriterDelay = 200, even when I update bgwriter_delay in postgresql.conf to a different value(eg 300ms), 
how can it ovewrite the fixed  200ms in bgwriter.c ?

I also want to know,  if it is not a bug, then what is the reason?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux