summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNeil Conway2007-08-07 06:25:14 +0000
committerNeil Conway2007-08-07 06:25:14 +0000
commit849ec99753982eafd223bdb1c9d854aaca3e8f2f (patch)
tree7370655f7bd0cb7260c5522a6acc989901f9c1a9 /src
parent3605c8c8772f0bc3cb196381d4ec95b113e7b0d6 (diff)
Adjust the output of MemoryContextStats() so that the stats for a
child memory contexts is indented two spaces to the right of its parent context. This should make it easier to deduce the memory context hierarchy from the output of MemoryContextStats().
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/mmgr/aset.c11
-rw-r--r--src/backend/utils/mmgr/mcxt.c15
-rw-r--r--src/include/nodes/memnodes.h4
3 files changed, 21 insertions, 9 deletions
diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c
index 71b6da1e493..f517e05bc9c 100644
--- a/src/backend/utils/mmgr/aset.c
+++ b/src/backend/utils/mmgr/aset.c
@@ -11,7 +11,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.72 2007/04/30 00:12:08 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.73 2007/08/07 06:25:14 neilc Exp $
*
* NOTE:
* This is a new (Feb. 05, 1999) implementation of the allocation set
@@ -214,7 +214,7 @@ static void AllocSetReset(MemoryContext context);
static void AllocSetDelete(MemoryContext context);
static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer);
static bool AllocSetIsEmpty(MemoryContext context);
-static void AllocSetStats(MemoryContext context);
+static void AllocSetStats(MemoryContext context, int level);
#ifdef MEMORY_CONTEXT_CHECKING
static void AllocSetCheck(MemoryContext context);
@@ -1034,7 +1034,7 @@ AllocSetIsEmpty(MemoryContext context)
* Displays stats about memory consumption of an allocset.
*/
static void
-AllocSetStats(MemoryContext context)
+AllocSetStats(MemoryContext context, int level)
{
AllocSet set = (AllocSet) context;
long nblocks = 0;
@@ -1044,6 +1044,7 @@ AllocSetStats(MemoryContext context)
AllocBlock block;
AllocChunk chunk;
int fidx;
+ int i;
for (block = set->blocks; block != NULL; block = block->next)
{
@@ -1060,6 +1061,10 @@ AllocSetStats(MemoryContext context)
freespace += chunk->size + ALLOC_CHUNKHDRSZ;
}
}
+
+ for (i = 0; i < level; i++)
+ fprintf(stderr, " ");
+
fprintf(stderr,
"%s: %lu total in %ld blocks; %lu free (%ld chunks); %lu used\n",
set->header.name, totalspace, nblocks, freespace, nchunks,
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index 88a91c4748c..dfc0245620a 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/mmgr/mcxt.c,v 1.61 2007/07/25 12:22:52 mha Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/mmgr/mcxt.c,v 1.62 2007/08/07 06:25:14 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -49,6 +49,8 @@ MemoryContext CurTransactionContext = NULL;
/* This is a transient link to the active portal's memory context: */
MemoryContext PortalContext = NULL;
+static void MemoryContextStatsInternal(MemoryContext context, int level);
+
/*****************************************************************************
* EXPORTED ROUTINES *
@@ -321,16 +323,21 @@ MemoryContextIsEmpty(MemoryContext context)
void
MemoryContextStats(MemoryContext context)
{
+ MemoryContextStatsInternal(context, 0);
+}
+
+static void
+MemoryContextStatsInternal(MemoryContext context, int level)
+{
MemoryContext child;
AssertArg(MemoryContextIsValid(context));
- (*context->methods->stats) (context);
+ (*context->methods->stats) (context, level);
for (child = context->firstchild; child != NULL; child = child->nextchild)
- MemoryContextStats(child);
+ MemoryContextStatsInternal(child, level + 1);
}
-
/*
* MemoryContextCheck
* Check all chunks in the named context.
diff --git a/src/include/nodes/memnodes.h b/src/include/nodes/memnodes.h
index 2bbe9a8ab8a..5f746479e13 100644
--- a/src/include/nodes/memnodes.h
+++ b/src/include/nodes/memnodes.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/nodes/memnodes.h,v 1.32 2007/01/05 22:19:55 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/nodes/memnodes.h,v 1.33 2007/08/07 06:25:14 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -44,7 +44,7 @@ typedef struct MemoryContextMethods
void (*delete) (MemoryContext context);
Size (*get_chunk_space) (MemoryContext context, void *pointer);
bool (*is_empty) (MemoryContext context);
- void (*stats) (MemoryContext context);
+ void (*stats) (MemoryContext context, int level);
#ifdef MEMORY_CONTEXT_CHECKING
void (*check) (MemoryContext context);
#endif