Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e04810e

Browse files
committed
Code review for dtrace probes added (so far) to 8.4. Adjust placement of
some bufmgr probes, take out redundant and memory-leak-inducing path arguments to smgr__md__read__done and smgr__md__write__done, fix bogus attempt to recalculate space used in sort__done, clean up formatting in places where I'm not sure pgindent will do a nice job by itself.
1 parent e43bb5b commit e04810e

File tree

5 files changed

+107
-62
lines changed

5 files changed

+107
-62
lines changed

src/backend/access/transam/xlog.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.333 2009/03/04 13:56:40 heikki Exp $
10+
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.334 2009/03/11 23:19:24 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -6384,10 +6384,11 @@ CreateCheckPoint(int flags)
63846384
if (log_checkpoints)
63856385
LogCheckpointEnd(false);
63866386

6387-
TRACE_POSTGRESQL_CHECKPOINT_DONE(CheckpointStats.ckpt_bufs_written,
6388-
NBuffers, CheckpointStats.ckpt_segs_added,
6389-
CheckpointStats.ckpt_segs_removed,
6390-
CheckpointStats.ckpt_segs_recycled);
6387+
TRACE_POSTGRESQL_CHECKPOINT_DONE(CheckpointStats.ckpt_bufs_written,
6388+
NBuffers,
6389+
CheckpointStats.ckpt_segs_added,
6390+
CheckpointStats.ckpt_segs_removed,
6391+
CheckpointStats.ckpt_segs_recycled);
63916392

63926393
LWLockRelease(CheckpointLock);
63936394
}

src/backend/storage/buffer/bufmgr.c

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.245 2009/01/12 05:10:44 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.246 2009/03/11 23:19:25 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -260,7 +260,11 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum,
260260
if (isExtend)
261261
blockNum = smgrnblocks(smgr, forkNum);
262262

263-
TRACE_POSTGRESQL_BUFFER_READ_START(forkNum, blockNum, smgr->smgr_rnode.spcNode, smgr->smgr_rnode.dbNode, smgr->smgr_rnode.relNode, isLocalBuf);
263+
TRACE_POSTGRESQL_BUFFER_READ_START(forkNum, blockNum,
264+
smgr->smgr_rnode.spcNode,
265+
smgr->smgr_rnode.dbNode,
266+
smgr->smgr_rnode.relNode,
267+
isLocalBuf);
264268

265269
if (isLocalBuf)
266270
{
@@ -269,11 +273,11 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum,
269273
if (found)
270274
{
271275
LocalBufferHitCount++;
272-
TRACE_POSTGRESQL_BUFFER_HIT(true); /* true == local buffer */
276+
TRACE_POSTGRESQL_BUFFER_HIT(true); /* true = local buffer */
273277
}
274278
else
275279
{
276-
TRACE_POSTGRESQL_BUFFER_MISS(true); /* ditto */
280+
TRACE_POSTGRESQL_BUFFER_MISS(true); /* ditto */
277281
}
278282
}
279283
else
@@ -288,11 +292,11 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum,
288292
if (found)
289293
{
290294
BufferHitCount++;
291-
TRACE_POSTGRESQL_BUFFER_HIT(false); /* false != local buffer */
295+
TRACE_POSTGRESQL_BUFFER_HIT(false); /* false = shared buffer */
292296
}
293297
else
294298
{
295-
TRACE_POSTGRESQL_BUFFER_MISS(false); /* ditto */
299+
TRACE_POSTGRESQL_BUFFER_MISS(false); /* ditto */
296300
}
297301
}
298302

@@ -310,9 +314,11 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum,
310314
VacuumCostBalance += VacuumCostPageHit;
311315

312316
TRACE_POSTGRESQL_BUFFER_READ_DONE(forkNum, blockNum,
313-
smgr->smgr_rnode.spcNode,
314-
smgr->smgr_rnode.dbNode,
315-
smgr->smgr_rnode.relNode, isLocalBuf, found);
317+
smgr->smgr_rnode.spcNode,
318+
smgr->smgr_rnode.dbNode,
319+
smgr->smgr_rnode.relNode,
320+
isLocalBuf,
321+
found);
316322

317323
return BufferDescriptorGetBuffer(bufHdr);
318324
}
@@ -437,8 +443,11 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum,
437443
VacuumCostBalance += VacuumCostPageMiss;
438444

439445
TRACE_POSTGRESQL_BUFFER_READ_DONE(forkNum, blockNum,
440-
smgr->smgr_rnode.spcNode, smgr->smgr_rnode.dbNode,
441-
smgr->smgr_rnode.relNode, isLocalBuf, found);
446+
smgr->smgr_rnode.spcNode,
447+
smgr->smgr_rnode.dbNode,
448+
smgr->smgr_rnode.relNode,
449+
isLocalBuf,
450+
found);
442451

443452
return BufferDescriptorGetBuffer(bufHdr);
444453
}
@@ -582,11 +591,6 @@ BufferAlloc(SMgrRelation smgr, ForkNumber forkNum,
582591
* happens to be trying to split the page the first one got from
583592
* StrategyGetBuffer.)
584593
*/
585-
586-
TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(forkNum,
587-
blockNum, smgr->smgr_rnode.spcNode,
588-
smgr->smgr_rnode.dbNode, smgr->smgr_rnode.relNode);
589-
590594
if (LWLockConditionalAcquire(buf->content_lock, LW_SHARED))
591595
{
592596
/*
@@ -607,13 +611,18 @@ BufferAlloc(SMgrRelation smgr, ForkNumber forkNum,
607611
}
608612

609613
/* OK, do the I/O */
614+
TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(forkNum, blockNum,
615+
smgr->smgr_rnode.spcNode,
616+
smgr->smgr_rnode.dbNode,
617+
smgr->smgr_rnode.relNode);
618+
610619
FlushBuffer(buf, NULL);
611620
LWLockRelease(buf->content_lock);
612621

613-
TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(
614-
forkNum, blockNum, smgr->smgr_rnode.spcNode,
615-
smgr->smgr_rnode.dbNode,
616-
smgr->smgr_rnode.relNode);
622+
TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(forkNum, blockNum,
623+
smgr->smgr_rnode.spcNode,
624+
smgr->smgr_rnode.dbNode,
625+
smgr->smgr_rnode.relNode);
617626
}
618627
else
619628
{
@@ -1235,13 +1244,13 @@ BufferSync(int flags)
12351244
buf_id = 0;
12361245
}
12371246

1238-
TRACE_POSTGRESQL_BUFFER_SYNC_DONE(NBuffers, num_written, num_to_write);
1239-
12401247
/*
12411248
* Update checkpoint statistics. As noted above, this doesn't include
12421249
* buffers written by other backends or bgwriter scan.
12431250
*/
12441251
CheckpointStats.ckpt_bufs_written += num_written;
1252+
1253+
TRACE_POSTGRESQL_BUFFER_SYNC_DONE(NBuffers, num_written, num_to_write);
12451254
}
12461255

12471256
/*
@@ -1852,14 +1861,14 @@ FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln)
18521861
errcontext.previous = error_context_stack;
18531862
error_context_stack = &errcontext;
18541863

1864+
TRACE_POSTGRESQL_BUFFER_FLUSH_START(reln->smgr_rnode.spcNode,
1865+
reln->smgr_rnode.dbNode,
1866+
reln->smgr_rnode.relNode);
1867+
18551868
/* Find smgr relation for buffer */
18561869
if (reln == NULL)
18571870
reln = smgropen(buf->tag.rnode);
18581871

1859-
TRACE_POSTGRESQL_BUFFER_FLUSH_START(reln->smgr_rnode.spcNode,
1860-
reln->smgr_rnode.dbNode,
1861-
reln->smgr_rnode.relNode);
1862-
18631872
/*
18641873
* Force XLOG flush up to buffer's LSN. This implements the basic WAL
18651874
* rule that log updates must hit disk before any of the data-file changes
@@ -1887,15 +1896,16 @@ FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln)
18871896

18881897
BufferFlushCount++;
18891898

1890-
TRACE_POSTGRESQL_BUFFER_FLUSH_DONE(reln->smgr_rnode.spcNode,
1891-
reln->smgr_rnode.dbNode, reln->smgr_rnode.relNode);
1892-
18931899
/*
18941900
* Mark the buffer as clean (unless BM_JUST_DIRTIED has become set) and
18951901
* end the io_in_progress state.
18961902
*/
18971903
TerminateBufferIO(buf, true, 0);
18981904

1905+
TRACE_POSTGRESQL_BUFFER_FLUSH_DONE(reln->smgr_rnode.spcNode,
1906+
reln->smgr_rnode.dbNode,
1907+
reln->smgr_rnode.relNode);
1908+
18991909
/* Pop the error context stack */
19001910
error_context_stack = errcontext.previous;
19011911
}

src/backend/storage/smgr/md.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.144 2009/01/12 05:10:44 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.145 2009/03/11 23:19:25 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -581,7 +581,10 @@ mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
581581
int nbytes;
582582
MdfdVec *v;
583583

584-
TRACE_POSTGRESQL_SMGR_MD_READ_START(forknum, blocknum, reln->smgr_rnode.spcNode, reln->smgr_rnode.dbNode, reln->smgr_rnode.relNode);
584+
TRACE_POSTGRESQL_SMGR_MD_READ_START(forknum, blocknum,
585+
reln->smgr_rnode.spcNode,
586+
reln->smgr_rnode.dbNode,
587+
reln->smgr_rnode.relNode);
585588

586589
v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL);
587590

@@ -596,7 +599,12 @@ mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
596599

597600
nbytes = FileRead(v->mdfd_vfd, buffer, BLCKSZ);
598601

599-
TRACE_POSTGRESQL_SMGR_MD_READ_DONE(forknum, blocknum, reln->smgr_rnode.spcNode, reln->smgr_rnode.dbNode, reln->smgr_rnode.relNode, relpath(reln->smgr_rnode, forknum), nbytes, BLCKSZ);
602+
TRACE_POSTGRESQL_SMGR_MD_READ_DONE(forknum, blocknum,
603+
reln->smgr_rnode.spcNode,
604+
reln->smgr_rnode.dbNode,
605+
reln->smgr_rnode.relNode,
606+
nbytes,
607+
BLCKSZ);
600608

601609
if (nbytes != BLCKSZ)
602610
{
@@ -645,7 +653,10 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
645653
Assert(blocknum < mdnblocks(reln, forknum));
646654
#endif
647655

648-
TRACE_POSTGRESQL_SMGR_MD_WRITE_START(forknum, blocknum, reln->smgr_rnode.spcNode, reln->smgr_rnode.dbNode, reln->smgr_rnode.relNode);
656+
TRACE_POSTGRESQL_SMGR_MD_WRITE_START(forknum, blocknum,
657+
reln->smgr_rnode.spcNode,
658+
reln->smgr_rnode.dbNode,
659+
reln->smgr_rnode.relNode);
649660

650661
v = _mdfd_getseg(reln, forknum, blocknum, isTemp, EXTENSION_FAIL);
651662

@@ -660,7 +671,12 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
660671

661672
nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ);
662673

663-
TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE(forknum, blocknum, reln->smgr_rnode.spcNode, reln->smgr_rnode.dbNode, reln->smgr_rnode.relNode, relpath(reln->smgr_rnode, forknum), nbytes, BLCKSZ);
674+
TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE(forknum, blocknum,
675+
reln->smgr_rnode.spcNode,
676+
reln->smgr_rnode.dbNode,
677+
reln->smgr_rnode.relNode,
678+
nbytes,
679+
BLCKSZ);
664680

665681
if (nbytes != BLCKSZ)
666682
{

src/backend/utils/probes.d

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
*
44
* Copyright (c) 2006-2009, PostgreSQL Global Development Group
55
*
6-
* $PostgreSQL: pgsql/src/backend/utils/probes.d,v 1.6 2009/01/01 17:23:48 momjian Exp $
6+
* $PostgreSQL: pgsql/src/backend/utils/probes.d,v 1.7 2009/03/11 23:19:25 tgl Exp $
77
* ----------
88
*/
99

1010

11-
/* typedefs used in PostgreSQL */
11+
/*
12+
* Typedefs used in PostgreSQL.
13+
*
14+
* NOTE: Do not use system-provided typedefs (e.g. uintptr_t, uint32_t, etc)
15+
* in probe definitions, as they cause compilation errors on Mac OS X 10.5.
16+
*/
1217
#define LocalTransactionId unsigned int
1318
#define LWLockId int
1419
#define LWLockMode int
@@ -20,10 +25,6 @@
2025

2126
provider postgresql {
2227

23-
/*
24-
* Note: Do not use built-in typedefs (e.g. uintptr_t, uint32_t, etc) * as they cause compilation errors in Mac OS X 10.5.
25-
*/
26-
2728
probe transaction__start(LocalTransactionId);
2829
probe transaction__commit(LocalTransactionId);
2930
probe transaction__abort(LocalTransactionId);
@@ -51,7 +52,7 @@ provider postgresql {
5152
probe statement__status(const char *);
5253

5354
probe sort__start(int, bool, int, int, bool);
54-
probe sort__done(unsigned long, long);
55+
probe sort__done(bool, long);
5556

5657
probe buffer__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid, bool);
5758
probe buffer__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, bool, bool);
@@ -83,9 +84,9 @@ provider postgresql {
8384
probe twophase__checkpoint__done();
8485

8586
probe smgr__md__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid);
86-
probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, const char *, int, int);
87+
probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int);
8788
probe smgr__md__write__start(ForkNumber, BlockNumber, Oid, Oid, Oid);
88-
probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, const char *, int, int);
89+
probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int);
8990

9091
probe xlog__insert(unsigned char, unsigned char);
9192
probe xlog__switch();

0 commit comments

Comments
 (0)