Skip to content

Commit d3dfc66

Browse files
committed
PrintBufferUsage() changed to report about shared, local and direct
blocks transfferes.
1 parent 55f5354 commit d3dfc66

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

src/backend/storage/buffer/buf_init.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/buf_init.c,v 1.8 1997/03/28 07:04:52 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/buf_init.c,v 1.9 1997/04/18 02:53:15 vadim Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -120,9 +120,12 @@ long *CommitInfoNeedsSave; /* to write buffers where we have filled in */
120120

121121
SPINLOCK BufMgrLock;
122122

123-
int ReadBufferCount;
124-
int BufferHitCount;
125-
int BufferFlushCount;
123+
long int ReadBufferCount;
124+
long int ReadLocalBufferCount;
125+
long int BufferHitCount;
126+
long int LocalBufferHitCount;
127+
long int BufferFlushCount;
128+
long int LocalBufferFlushCount;
126129

127130

128131
/*

src/backend/storage/buffer/bufmgr.c

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.11 1997/03/28 07:05:03 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.12 1997/04/18 02:53:23 vadim Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -75,9 +75,12 @@
7575
#include "catalog/catalog.h"
7676

7777
extern SPINLOCK BufMgrLock;
78-
extern int ReadBufferCount;
79-
extern int BufferHitCount;
80-
extern int BufferFlushCount;
78+
extern long int ReadBufferCount;
79+
extern long int ReadLocalBufferCount;
80+
extern long int BufferHitCount;
81+
extern long int LocalBufferHitCount;
82+
extern long int BufferFlushCount;
83+
extern long int LocalBufferFlushCount;
8184

8285
static int WriteMode = BUFFER_LATE_WRITE; /* Delayed write is default */
8386

@@ -217,7 +220,9 @@ ReadBufferWithBufferLock(Relation reln,
217220
isLocalBuf = reln->rd_islocal;
218221

219222
if (isLocalBuf) {
223+
ReadLocalBufferCount++;
220224
bufHdr = LocalBufferAlloc(reln, blockNum, &found);
225+
if (found) LocalBufferHitCount++;
221226
} else {
222227
ReadBufferCount++;
223228

@@ -473,7 +478,6 @@ BufferAlloc(Relation reln,
473478
}
474479
else
475480
{
476-
BufferFlushCount++;
477481
/*
478482
* BM_JUST_DIRTIED cleared by BufferReplace and shouldn't
479483
* be setted by anyone. - vadim 01/17/97
@@ -760,6 +764,7 @@ FlushBuffer(Buffer buffer, bool release)
760764
bufHdr->tag.blockNum, bufHdr->sb_relname);
761765
return (STATUS_ERROR);
762766
}
767+
BufferFlushCount++;
763768

764769
SpinAcquire(BufMgrLock);
765770
/*
@@ -955,6 +960,7 @@ BufferSync()
955960
elog(WARN, "BufferSync: cannot write %u for %s",
956961
bufHdr->tag.blockNum, bufHdr->sb_relname);
957962
}
963+
BufferFlushCount++;
958964
/*
959965
* If this buffer was marked by someone as DIRTY while
960966
* we were flushing it out we must not clear DIRTY flag
@@ -1052,16 +1058,24 @@ void
10521058
PrintBufferUsage(FILE *statfp)
10531059
{
10541060
float hitrate;
1061+
float localhitrate;
10551062

10561063
if (ReadBufferCount==0)
10571064
hitrate = 0.0;
10581065
else
10591066
hitrate = (float)BufferHitCount * 100.0/ReadBufferCount;
10601067

1061-
fprintf(statfp, "!\t%ld blocks read, %ld blocks written, buffer hit rate = %.2f%%\n",
1062-
ReadBufferCount - BufferHitCount + NDirectFileRead,
1063-
BufferFlushCount + NDirectFileWrite,
1064-
hitrate);
1068+
if (ReadLocalBufferCount==0)
1069+
localhitrate = 0.0;
1070+
else
1071+
localhitrate = (float)LocalBufferHitCount * 100.0/ReadLocalBufferCount;
1072+
1073+
fprintf(statfp, "!\tShared blocks: %10ld read, %10ld written, buffer hit rate = %.2f%%\n",
1074+
ReadBufferCount - BufferHitCount, BufferFlushCount, hitrate);
1075+
fprintf(statfp, "!\tLocal blocks: %10ld read, %10ld written, buffer hit rate = %.2f%%\n",
1076+
ReadLocalBufferCount - LocalBufferHitCount, LocalBufferFlushCount, localhitrate);
1077+
fprintf(statfp, "!\tDirect blocks: %10ld read, %10ld written\n",
1078+
NDirectFileRead, NDirectFileWrite);
10651079
}
10661080

10671081
void
@@ -1070,6 +1084,9 @@ ResetBufferUsage()
10701084
BufferHitCount = 0;
10711085
ReadBufferCount = 0;
10721086
BufferFlushCount = 0;
1087+
LocalBufferHitCount = 0;
1088+
ReadLocalBufferCount = 0;
1089+
LocalBufferFlushCount = 0;
10731090
NDirectFileRead = 0;
10741091
NDirectFileWrite = 0;
10751092
}
@@ -1264,6 +1281,8 @@ BufferReplace(BufferDesc *bufHdr, bool bufferLockHeld)
12641281
if (status == SM_FAIL)
12651282
return (FALSE);
12661283

1284+
BufferFlushCount++;
1285+
12671286
return (TRUE);
12681287
}
12691288

src/backend/storage/buffer/localbuf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
*
1717
* IDENTIFICATION
18-
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.5 1997/01/16 08:13:14 vadim Exp $
18+
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.6 1997/04/18 02:53:37 vadim Exp $
1919
*
2020
*-------------------------------------------------------------------------
2121
*/
@@ -47,6 +47,8 @@
4747
#include "executor/execdebug.h" /* for NDirectFileRead */
4848
#include "catalog/catalog.h"
4949

50+
extern long int LocalBufferFlushCount;
51+
5052
int NLocBuffer = 64;
5153
BufferDesc *LocalBufferDescriptors = NULL;
5254
long *LocalRefCount = NULL;
@@ -118,6 +120,7 @@ LocalBufferAlloc(Relation reln, BlockNumber blockNum, bool *foundPtr)
118120
/* flush this page */
119121
smgrwrite(bufrel->rd_rel->relsmgr, bufrel, bufHdr->tag.blockNum,
120122
(char *) MAKE_PTR(bufHdr->data));
123+
LocalBufferFlushCount++;
121124
}
122125

123126
/*
@@ -192,6 +195,7 @@ FlushLocalBuffer(Buffer buffer, bool release)
192195
Assert(bufrel != NULL);
193196
smgrflush(bufrel->rd_rel->relsmgr, bufrel, bufHdr->tag.blockNum,
194197
(char *) MAKE_PTR(bufHdr->data));
198+
LocalBufferFlushCount++;
195199

196200
Assert(LocalRefCount[bufid] > 0);
197201
if ( release )
@@ -261,6 +265,7 @@ LocalBufferSync(void)
261265

262266
smgrwrite(bufrel->rd_rel->relsmgr, bufrel, buf->tag.blockNum,
263267
(char *) MAKE_PTR(buf->data));
268+
LocalBufferFlushCount++;
264269

265270
buf->tag.relId.relId = InvalidOid;
266271
buf->flags &= ~BM_DIRTY;

0 commit comments

Comments
 (0)