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)