diff options
author | simonmar@microsoft.com <unknown> | 2007-11-22 10:50:24 +0000 |
---|---|---|
committer | simonmar@microsoft.com <unknown> | 2007-11-22 10:50:24 +0000 |
commit | 6b9f9a04d857ac36674594bba89a695fdeef48f7 (patch) | |
tree | 5dd781a9739c10735526d55852ab592f6669392c /rts/Stats.c | |
parent | a837a348cb76b36e502b7dcf6af8f0ff90514f24 (diff) | |
download | haskell-6b9f9a04d857ac36674594bba89a695fdeef48f7.tar.gz |
stats: print elapsed time for GC in each generation
Diffstat (limited to 'rts/Stats.c')
-rw-r--r-- | rts/Stats.c | 12 |
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", |