diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2011-11-25 12:10:46 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2011-11-25 16:34:32 -0300 |
commit | 9d3b50244357ef4c4e3b6e01f91de599077179c8 (patch) | |
tree | 520ed45e3952130a098589ed12f04abde06bd4c6 /src/backend/storage/buffer/bufmgr.c | |
parent | 877b67c38b946dcbf70fe11736bdde841e4c826b (diff) | |
download | postgresql-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.c | 20 |
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); } |