X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FStats.c;h=7059feb4a971036f02fb39df7e7228e59ab4d2d7;hb=9b06d03f0dda22ee7f4c0a3a99844ed0ad81e213;hp=1127b81566632a8a9f39993be949f71f6b3770f8;hpb=a84385fa752d8fa800a2155cce95f47c68b74e2b;p=ghc-hetmet.git diff --git a/rts/Stats.c b/rts/Stats.c index 1127b81..7059feb 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; @@ -347,7 +354,11 @@ stat_endGC (lnat alloc, lnat live, lnat copied, lnat gen) #if USE_PAPI if(papi_is_reporting) { /* Switch to counting mutator events */ - papi_stop_gc_count(); + if (gen == 0) { + papi_stop_gc0_count(); + } else { + papi_stop_gc1_count(); + } papi_start_mutator_count(); } #endif @@ -529,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",