1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-26 12:21:12 +03:00

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
This commit is contained in:
Alvaro Herrera
2011-11-25 12:10:46 -03:00
parent 877b67c38b
commit 9d3b502443
5 changed files with 54 additions and 9 deletions

View File

@ -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);
}