Commit 08882ce7 authored by Simon Riggs's avatar Simon Riggs

Reduce CPU utilisation of WALSender process. Process was using 10% CPU

doing nothing, caused by naptime specified in milliseconds yet units of
pg_usleep() parameter is microseconds. Correctly specifying units
reduces call frequency by 1000. Reduction in CPU consumption verified.
parent 16a4186d
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/replication/walsender.c,v 1.10 2010/03/16 09:09:55 heikki Exp $ * $PostgreSQL: pgsql/src/backend/replication/walsender.c,v 1.11 2010/03/24 20:11:12 sriggs Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -67,7 +67,7 @@ bool am_walsender = false; /* Am I a walsender process ? */ ...@@ -67,7 +67,7 @@ bool am_walsender = false; /* Am I a walsender process ? */
int MaxWalSenders = 0; /* the maximum number of concurrent walsenders */ int MaxWalSenders = 0; /* the maximum number of concurrent walsenders */
int WalSndDelay = 200; /* max sleep time between some actions */ int WalSndDelay = 200; /* max sleep time between some actions */
#define NAPTIME_PER_CYCLE 100 /* max sleep time between cycles (100ms) */ #define NAPTIME_PER_CYCLE 100000L /* max sleep time between cycles (100ms) */
/* /*
* These variables are used similarly to openLogFile/Id/Seg/Off, * These variables are used similarly to openLogFile/Id/Seg/Off,
...@@ -396,7 +396,7 @@ WalSndLoop(void) ...@@ -396,7 +396,7 @@ WalSndLoop(void)
* sleep into NAPTIME_PER_CYCLE (ms) increments, and check for * sleep into NAPTIME_PER_CYCLE (ms) increments, and check for
* interrupts after each nap. * interrupts after each nap.
*/ */
remain = WalSndDelay; remain = WalSndDelay * 1000L;
while (remain > 0) while (remain > 0)
{ {
if (got_SIGHUP || shutdown_requested || ready_to_stop) if (got_SIGHUP || shutdown_requested || ready_to_stop)
......
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