summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2012-01-26 18:19:48 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2012-01-26 18:39:13 +0200
commit6d90eaaa89a007e0d365f49d6436f35d2392cfeb (patch)
tree625c4dc75f0067c438696b9ebc96715521635e2f /src/include
parent467ff207f51439cadee7857d6a0874f34652ed53 (diff)
Make bgwriter sleep longer when it has no work to do, to save electricity.
To make it wake up promptly when activity starts again, backends nudge it by setting a latch in MarkBufferDirty(). The latch is kept set while bgwriter is active, so there is very little overhead from that when the system is busy. It is only armed before going into longer sleep. Peter Geoghegan, with some changes by me.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/storage/bufmgr.h2
-rw-r--r--src/include/storage/proc.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index a03c06874b7..de1bbd01d83 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -213,7 +213,7 @@ extern bool HoldingBufferPinThatDelaysRecovery(void);
extern void AbortBufferIO(void);
extern void BufmgrCommit(void);
-extern void BgBufferSync(void);
+extern bool BgBufferSync(void);
extern void AtProcExit_LocalBuffers(void);
diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h
index 358d1a456cb..b68ae39268e 100644
--- a/src/include/storage/proc.h
+++ b/src/include/storage/proc.h
@@ -188,6 +188,8 @@ typedef struct PROC_HDR
PGPROC *freeProcs;
/* Head of list of autovacuum's free PGPROC structures */
PGPROC *autovacFreeProcs;
+ /* BGWriter process latch */
+ Latch *bgwriterLatch;
/* Current shared estimate of appropriate spins_per_delay value */
int spins_per_delay;
/* The proc of the Startup process, since not in ProcArray */