aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/buffer/bufmgr.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2011-11-25 12:10:46 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2011-11-25 16:34:32 -0300
commit9d3b50244357ef4c4e3b6e01f91de599077179c8 (patch)
tree520ed45e3952130a098589ed12f04abde06bd4c6 /src/backend/storage/buffer/bufmgr.c
parent877b67c38b946dcbf70fe11736bdde841e4c826b (diff)
downloadpostgresql-9d3b50244357ef4c4e3b6e01f91de599077179c8.tar.gz
postgresql-9d3b50244357ef4c4e3b6e01f91de599077179c8.zip
Improve logging of autovacuum I/O activity
This adds some I/O stats to the logging of autovacuum (when the operation takes long enough that log_autovacuum_min_duration causes it to be logged), so that it is easier to tune. Notably, it adds buffer I/O counts (hits, misses, dirtied) and read and write rate. Authors: Greg Smith and Noah Misch
Diffstat (limited to 'src/backend/storage/buffer/bufmgr.c')
-rw-r--r--src/backend/storage/buffer/bufmgr.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 2342506d679..71fe8c665ec 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -340,6 +340,7 @@ ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum,
{
/* Just need to update stats before we exit */
*hit = true;
+ VacuumPageHit++;
if (VacuumCostActive)
VacuumCostBalance += VacuumCostPageHit;
@@ -471,6 +472,7 @@ ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum,
TerminateBufferIO(bufHdr, false, BM_VALID);
}
+ VacuumPageMiss++;
if (VacuumCostActive)
VacuumCostBalance += VacuumCostPageMiss;
@@ -972,10 +974,14 @@ MarkBufferDirty(Buffer buffer)
Assert(bufHdr->refcount > 0);
/*
- * If the buffer was not dirty already, do vacuum cost accounting.
+ * If the buffer was not dirty already, do vacuum accounting.
*/
- if (!(bufHdr->flags & BM_DIRTY) && VacuumCostActive)
- VacuumCostBalance += VacuumCostPageDirty;
+ if (!(bufHdr->flags & BM_DIRTY))
+ {
+ VacuumPageDirty++;
+ if (VacuumCostActive)
+ VacuumCostBalance += VacuumCostPageDirty;
+ }
bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED);
@@ -2337,8 +2343,12 @@ SetBufferCommitInfoNeedsSave(Buffer buffer)
{
LockBufHdr(bufHdr);
Assert(bufHdr->refcount > 0);
- if (!(bufHdr->flags & BM_DIRTY) && VacuumCostActive)
- VacuumCostBalance += VacuumCostPageDirty;
+ if (!(bufHdr->flags & BM_DIRTY))
+ {
+ VacuumPageDirty++;
+ if (VacuumCostActive)
+ VacuumCostBalance += VacuumCostPageDirty;
+ }
bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED);
UnlockBufHdr(bufHdr);
}