From d3dfc664d0fe5fc014ec8e7f5dae1b1b62c40fdb Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Fri, 18 Apr 1997 02:53:37 +0000 Subject: [PATCH] PrintBufferUsage() changed to report about shared, local and direct blocks transfferes. --- src/backend/storage/buffer/buf_init.c | 11 +++++--- src/backend/storage/buffer/bufmgr.c | 37 ++++++++++++++++++++------- src/backend/storage/buffer/localbuf.c | 7 ++++- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/backend/storage/buffer/buf_init.c b/src/backend/storage/buffer/buf_init.c index dcfebd0d43..0a148ced4f 100644 --- a/src/backend/storage/buffer/buf_init.c +++ b/src/backend/storage/buffer/buf_init.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/buf_init.c,v 1.8 1997/03/28 07:04:52 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/buf_init.c,v 1.9 1997/04/18 02:53:15 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -120,9 +120,12 @@ long *CommitInfoNeedsSave; /* to write buffers where we have filled in */ SPINLOCK BufMgrLock; -int ReadBufferCount; -int BufferHitCount; -int BufferFlushCount; +long int ReadBufferCount; +long int ReadLocalBufferCount; +long int BufferHitCount; +long int LocalBufferHitCount; +long int BufferFlushCount; +long int LocalBufferFlushCount; /* diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index 5331ab3fbe..cd057a830a 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.11 1997/03/28 07:05:03 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.12 1997/04/18 02:53:23 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -75,9 +75,12 @@ #include "catalog/catalog.h" extern SPINLOCK BufMgrLock; -extern int ReadBufferCount; -extern int BufferHitCount; -extern int BufferFlushCount; +extern long int ReadBufferCount; +extern long int ReadLocalBufferCount; +extern long int BufferHitCount; +extern long int LocalBufferHitCount; +extern long int BufferFlushCount; +extern long int LocalBufferFlushCount; static int WriteMode = BUFFER_LATE_WRITE; /* Delayed write is default */ @@ -217,7 +220,9 @@ ReadBufferWithBufferLock(Relation reln, isLocalBuf = reln->rd_islocal; if (isLocalBuf) { + ReadLocalBufferCount++; bufHdr = LocalBufferAlloc(reln, blockNum, &found); + if (found) LocalBufferHitCount++; } else { ReadBufferCount++; @@ -473,7 +478,6 @@ BufferAlloc(Relation reln, } else { - BufferFlushCount++; /* * BM_JUST_DIRTIED cleared by BufferReplace and shouldn't * be setted by anyone. - vadim 01/17/97 @@ -760,6 +764,7 @@ FlushBuffer(Buffer buffer, bool release) bufHdr->tag.blockNum, bufHdr->sb_relname); return (STATUS_ERROR); } + BufferFlushCount++; SpinAcquire(BufMgrLock); /* @@ -955,6 +960,7 @@ BufferSync() elog(WARN, "BufferSync: cannot write %u for %s", bufHdr->tag.blockNum, bufHdr->sb_relname); } + BufferFlushCount++; /* * If this buffer was marked by someone as DIRTY while * we were flushing it out we must not clear DIRTY flag @@ -1052,16 +1058,24 @@ void PrintBufferUsage(FILE *statfp) { float hitrate; + float localhitrate; if (ReadBufferCount==0) hitrate = 0.0; else hitrate = (float)BufferHitCount * 100.0/ReadBufferCount; - fprintf(statfp, "!\t%ld blocks read, %ld blocks written, buffer hit rate = %.2f%%\n", - ReadBufferCount - BufferHitCount + NDirectFileRead, - BufferFlushCount + NDirectFileWrite, - hitrate); + if (ReadLocalBufferCount==0) + localhitrate = 0.0; + else + localhitrate = (float)LocalBufferHitCount * 100.0/ReadLocalBufferCount; + + fprintf(statfp, "!\tShared blocks: %10ld read, %10ld written, buffer hit rate = %.2f%%\n", + ReadBufferCount - BufferHitCount, BufferFlushCount, hitrate); + fprintf(statfp, "!\tLocal blocks: %10ld read, %10ld written, buffer hit rate = %.2f%%\n", + ReadLocalBufferCount - LocalBufferHitCount, LocalBufferFlushCount, localhitrate); + fprintf(statfp, "!\tDirect blocks: %10ld read, %10ld written\n", + NDirectFileRead, NDirectFileWrite); } void @@ -1070,6 +1084,9 @@ ResetBufferUsage() BufferHitCount = 0; ReadBufferCount = 0; BufferFlushCount = 0; + LocalBufferHitCount = 0; + ReadLocalBufferCount = 0; + LocalBufferFlushCount = 0; NDirectFileRead = 0; NDirectFileWrite = 0; } @@ -1264,6 +1281,8 @@ BufferReplace(BufferDesc *bufHdr, bool bufferLockHeld) if (status == SM_FAIL) return (FALSE); + BufferFlushCount++; + return (TRUE); } diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index cd2476b6e8..3e7f7e2c77 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.5 1997/01/16 08:13:14 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.6 1997/04/18 02:53:37 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -47,6 +47,8 @@ #include "executor/execdebug.h" /* for NDirectFileRead */ #include "catalog/catalog.h" +extern long int LocalBufferFlushCount; + int NLocBuffer = 64; BufferDesc *LocalBufferDescriptors = NULL; long *LocalRefCount = NULL; @@ -118,6 +120,7 @@ LocalBufferAlloc(Relation reln, BlockNumber blockNum, bool *foundPtr) /* flush this page */ smgrwrite(bufrel->rd_rel->relsmgr, bufrel, bufHdr->tag.blockNum, (char *) MAKE_PTR(bufHdr->data)); + LocalBufferFlushCount++; } /* @@ -192,6 +195,7 @@ FlushLocalBuffer(Buffer buffer, bool release) Assert(bufrel != NULL); smgrflush(bufrel->rd_rel->relsmgr, bufrel, bufHdr->tag.blockNum, (char *) MAKE_PTR(bufHdr->data)); + LocalBufferFlushCount++; Assert(LocalRefCount[bufid] > 0); if ( release ) @@ -261,6 +265,7 @@ LocalBufferSync(void) smgrwrite(bufrel->rd_rel->relsmgr, bufrel, buf->tag.blockNum, (char *) MAKE_PTR(buf->data)); + LocalBufferFlushCount++; buf->tag.relId.relId = InvalidOid; buf->flags &= ~BM_DIRTY; -- 2.40.0