]> granicus.if.org Git - postgresql/commitdiff
PrintBufferUsage() changed to report about shared, local and direct
authorVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 18 Apr 1997 02:53:37 +0000 (02:53 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 18 Apr 1997 02:53:37 +0000 (02:53 +0000)
blocks transfferes.

src/backend/storage/buffer/buf_init.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/buffer/localbuf.c

index dcfebd0d433ae6e3345da32a4493363ffd4dbd5e..0a148ced4fdc7283952fdef4301be38554278263 100644 (file)
@@ -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;
 
 
 /*
index 5331ab3fbe2dbf84e4e7a78bff9a146adfd722e9..cd057a830a4dc662de7b784a5f4d1707895fcfd0 100644 (file)
@@ -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 $
  *
  *-------------------------------------------------------------------------
  */
 #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);
 }
 
index cd2476b6e871a2b94a2d335f6c863ba39388193c..3e7f7e2c77602d9c67daaaeaa84914d223e441af 100644 (file)
@@ -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;