Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite04810e

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 argumentsto smgr__md__read__done and smgr__md__write__done, fix bogus attempt torecalculate space used in sort__done, clean up formatting in places whereI'm not sure pgindent will do a nice job by itself.
1 parente43bb5b commite04810e

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
returnBufferDescriptorGetBuffer(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
returnBufferDescriptorGetBuffer(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
intnbytes;
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/1123: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
#defineLocalTransactionId unsigned int
1318
#defineLWLockId int
1419
#defineLWLockMode int
@@ -20,10 +25,6 @@
2025

2126
providerpostgresql {
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
probetransaction__start(LocalTransactionId);
2829
probetransaction__commit(LocalTransactionId);
2930
probetransaction__abort(LocalTransactionId);
@@ -51,7 +52,7 @@ provider postgresql {
5152
probestatement__status(constchar*);
5253

5354
probesort__start(int,bool,int,int,bool);
54-
probesort__done(unsigned long,long);
55+
probesort__done(bool,long);
5556

5657
probebuffer__read__start(ForkNumber,BlockNumber,Oid,Oid,Oid,bool);
5758
probebuffer__read__done(ForkNumber,BlockNumber,Oid,Oid,Oid,bool,bool);
@@ -83,9 +84,9 @@ provider postgresql {
8384
probetwophase__checkpoint__done();
8485

8586
probesmgr__md__read__start(ForkNumber,BlockNumber,Oid,Oid,Oid);
86-
probesmgr__md__read__done(ForkNumber,BlockNumber,Oid,Oid,Oid,constchar*,int,int);
87+
probesmgr__md__read__done(ForkNumber,BlockNumber,Oid,Oid,Oid,int,int);
8788
probesmgr__md__write__start(ForkNumber,BlockNumber,Oid,Oid,Oid);
88-
probesmgr__md__write__done(ForkNumber,BlockNumber,Oid,Oid,Oid,constchar*,int,int);
89+
probesmgr__md__write__done(ForkNumber,BlockNumber,Oid,Oid,Oid,int,int);
8990

9091
probexlog__insert(unsignedchar,unsignedchar);
9192
probexlog__switch();

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp