aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/storage/buffer/buf_init.c11
-rw-r--r--src/backend/storage/buffer/bufmgr.c37
-rw-r--r--src/backend/storage/buffer/localbuf.c7
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 dcfebd0d433..0a148ced4fd 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 5331ab3fbe2..cd057a830a4 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 cd2476b6e87..3e7f7e2c776 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;