diff options
author | Jan Wieck <JanWieck@Yahoo.com> | 2004-02-06 19:36:18 +0000 |
---|---|---|
committer | Jan Wieck <JanWieck@Yahoo.com> | 2004-02-06 19:36:18 +0000 |
commit | f425b605f4e97a4571372b116a1ec81daf88dfc8 (patch) | |
tree | 65acd8532a650b76c988890df2ac05f867e9d87c /src/backend/storage/buffer | |
parent | 687d7cf3550f74bb09ddc0217025aad6fcc43a95 (diff) | |
download | postgresql-f425b605f4e97a4571372b116a1ec81daf88dfc8.tar.gz postgresql-f425b605f4e97a4571372b116a1ec81daf88dfc8.zip |
Cost based vacuum delay feature.
Jan
Diffstat (limited to 'src/backend/storage/buffer')
-rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 8 | ||||
-rw-r--r-- | src/backend/storage/buffer/freelist.c | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index cb82159aff0..b927b5ea5e7 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.155 2004/02/04 01:24:53 wieck Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.156 2004/02/06 19:36:18 wieck Exp $ * *------------------------------------------------------------------------- */ @@ -576,6 +576,12 @@ write_buffer(Buffer buffer, bool release) LWLockAcquire(BufMgrLock, LW_EXCLUSIVE); Assert(bufHdr->refcount > 0); + /* + * If the buffer is not dirty yet, do vacuum cost accounting. + */ + if (!(bufHdr->flags & BM_DIRTY) && VacuumCostActive) + VacuumCostBalance += VacuumCostPageDirty; + bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); if (release) diff --git a/src/backend/storage/buffer/freelist.c b/src/backend/storage/buffer/freelist.c index 6388bc724d9..74ec4518ab9 100644 --- a/src/backend/storage/buffer/freelist.c +++ b/src/backend/storage/buffer/freelist.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/freelist.c,v 1.39 2004/01/15 16:14:26 wieck Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/freelist.c,v 1.40 2004/02/06 19:36:18 wieck Exp $ * *------------------------------------------------------------------------- */ @@ -31,6 +31,7 @@ #include "storage/ipc.h" #include "storage/proc.h" #include "access/xact.h" +#include "miscadmin.h" #ifndef MAX #define MAX(a,b) (((a) > (b)) ? (a) : (b)) @@ -237,6 +238,12 @@ StrategyBufferLookup(BufferTag *tagPtr, bool recheck) strategy_get_from = STRAT_LIST_T2; } + /* + * Do the cost accounting for vacuum + */ + if (VacuumCostActive) + VacuumCostBalance += VacuumCostPageMiss; + /* report cache miss */ return NULL; } @@ -250,6 +257,8 @@ StrategyBufferLookup(BufferTag *tagPtr, bool recheck) * Count hits */ StrategyControl->num_hit[cdb->list]++; + if (VacuumCostActive) + VacuumCostBalance += VacuumCostPageHit; /* * If this is a T2 hit, we simply move the CDB to the |