summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Conway2007-08-07 06:25:14 +0000
committerNeil Conway2007-08-07 06:25:14 +0000
commit849ec99753982eafd223bdb1c9d854aaca3e8f2f (patch)
tree7370655f7bd0cb7260c5522a6acc989901f9c1a9
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().
-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 71b6da1e49..f517e05bc9 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 88a91c4748..dfc0245620 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 2bbe9a8ab8..5f746479e1 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