summaryrefslogtreecommitdiff
path: root/rts/Stats.c
diff options
context:
space:
mode:
authorsimonmar@microsoft.com <unknown>2007-11-22 10:50:24 +0000
committersimonmar@microsoft.com <unknown>2007-11-22 10:50:24 +0000
commit6b9f9a04d857ac36674594bba89a695fdeef48f7 (patch)
tree5dd781a9739c10735526d55852ab592f6669392c /rts/Stats.c
parenta837a348cb76b36e502b7dcf6af8f0ff90514f24 (diff)
downloadhaskell-6b9f9a04d857ac36674594bba89a695fdeef48f7.tar.gz
stats: print elapsed time for GC in each generation
Diffstat (limited to 'rts/Stats.c')
-rw-r--r--rts/Stats.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/rts/Stats.c b/rts/Stats.c
index 4bb9c8237e..7059feb4a9 100644
--- a/rts/Stats.c
+++ b/rts/Stats.c
@@ -66,6 +66,7 @@ static lnat ResidencySamples = 0; // for stats only
static lnat GC_start_faults = 0, GC_end_faults = 0;
static Ticks *GC_coll_times;
+static Ticks *GC_coll_etimes;
static void statsFlush( void );
static void statsClose( void );
@@ -138,8 +139,13 @@ initStats(void)
(Ticks *)stgMallocBytes(
sizeof(Ticks)*RtsFlags.GcFlags.generations,
"initStats");
+ GC_coll_etimes =
+ (Ticks *)stgMallocBytes(
+ sizeof(Ticks)*RtsFlags.GcFlags.generations,
+ "initStats");
for (i = 0; i < RtsFlags.GcFlags.generations; i++) {
GC_coll_times[i] = 0;
+ GC_coll_etimes[i] = 0;
}
}
@@ -314,6 +320,7 @@ stat_endGC (lnat alloc, lnat live, lnat copied, lnat gen)
}
GC_coll_times[gen] += gc_time;
+ GC_coll_etimes[gen] += gc_etime;
GC_tot_copied += (ullong) copied;
GC_tot_alloc += (ullong) alloc;
@@ -533,9 +540,10 @@ stat_exit(int alloc)
/* Print garbage collections in each gen */
for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
- statsPrintf("%11d collections in generation %d (%6.2fs)\n",
+ statsPrintf("%11d collections in generation %d, %6.2fs, %6.2fs elapsed\n",
generations[g].collections, g,
- TICK_TO_DBL(GC_coll_times[g]));
+ TICK_TO_DBL(GC_coll_times[g]),
+ TICK_TO_DBL(GC_coll_etimes[g]));
}
statsPrintf("\n%11ld Mb total memory in use\n\n",