From d1e04a6dd54e040f3cba06bf19c992d41bc3b87f Mon Sep 17 00:00:00 2001 From: Richard Kistruck Date: Tue, 23 Mar 2010 04:07:43 +0000 Subject: [PATCH] mps br/vmem: simple-chunk-return: arenavm.c, trace.c, mpmst.h -- trace->preTraceArenaReserved, to show pre- and peak-vmem during collection Copied from Perforce Change: 170098 ServerID: perforce.ravenbrook.com --- mps/code/arenavm.c | 4 +++- mps/code/mpmst.h | 1 + mps/code/trace.c | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 399145f3629..f29d860dfae 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -1675,6 +1675,7 @@ static void VMCompact(Arena arena, Trace trace) } DIAG( + Size vmem0 = trace->preTraceArenaReserved; Size vmem2 = VMArenaReserved(arena); Size vmemD = vmem1 - vmem2; Size live = trace->forwardedSize + trace->preservedInPlaceSize; @@ -1684,7 +1685,8 @@ static void VMCompact(Arena arena, Trace trace) || trace->why == TraceStartWhyCLIENTFULL_INCREMENTAL || trace->why == TraceStartWhyCLIENTFULL_BLOCK) { DIAG_SINGLEF(( "VMCompact", - "vmem was $Um$3, ", M_whole(vmem1), M_frac(vmem1), + "pre-collection vmem was $Um$3, ", M_whole(vmem0), M_frac(vmem0), + "peaked at $Um$3, ", M_whole(vmem1), M_frac(vmem1), "released $Um$3, ", M_whole(vmemD), M_frac(vmemD), "now $Um$3", M_whole(vmem2), M_frac(vmem2), " (why $U", trace->why, diff --git a/mps/code/mpmst.h b/mps/code/mpmst.h index c5a4fe0e3f3..488a6d1b54b 100644 --- a/mps/code/mpmst.h +++ b/mps/code/mpmst.h @@ -506,6 +506,7 @@ typedef struct TraceStruct { Bool firstStretch; /* in first stretch of band (see accessor) */ Bool emergency; /* ran out of memory during trace */ Chain chain; /* chain being incrementally collected */ + STATISTIC_DECL(Size preTraceArenaReserved); /* ArenaReserved before this trace */ Size condemned; /* condemned bytes */ Size notCondemned; /* collectable but not condemned */ Size foundation; /* initial grey set size */ diff --git a/mps/code/trace.c b/mps/code/trace.c index 5cffa818009..e553d160318 100644 --- a/mps/code/trace.c +++ b/mps/code/trace.c @@ -663,6 +663,7 @@ found: trace->band = RankAMBIG; /* Required to be the earliest rank. */ trace->emergency = FALSE; trace->chain = NULL; + STATISTIC(trace->preTraceArenaReserved = ArenaReserved(arena)); trace->condemned = (Size)0; /* nothing condemned yet */ trace->notCondemned = (Size)0; trace->foundation = (Size)0; /* nothing grey yet */