X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FStats.c;h=5d4f772396c4fad5720e640b678621d4b0caf4eb;hb=0e6a76a1182be8336cfaaa6bf482c57a89193372;hp=3eb5631ba7f886f7de3a9cd25fc62cde04027d58;hpb=652b549f313ca70242179a2628b2800f692f5b7a;p=ghc-hetmet.git diff --git a/ghc/rts/Stats.c b/ghc/rts/Stats.c index 3eb5631..5d4f772 100644 --- a/ghc/rts/Stats.c +++ b/ghc/rts/Stats.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Stats.c,v 1.41 2001/11/28 14:29:59 simonmar Exp $ + * $Id: Stats.c,v 1.46 2002/08/19 16:02:26 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -111,9 +111,9 @@ static TICK_TYPE HCe_start_time, HCe_tot_time = 0; // heap census prof elap ti #define PROF_VAL(x) 0 #endif -lnat MaxResidency = 0; /* in words; for stats only */ -lnat AvgResidency = 0; -lnat ResidencySamples = 0; /* for stats only */ +static lnat MaxResidency = 0; // in words; for stats only +static lnat AvgResidency = 0; +static lnat ResidencySamples = 0; // for stats only static lnat GC_start_faults = 0, GC_end_faults = 0; @@ -579,17 +579,19 @@ stat_endHeapCensus(void) stats for this thread into the task_ids struct for that thread. -------------------------------------------------------------------------- */ -#ifdef SMP +#if defined(SMP) void stat_workerStop(void) { nat i; pthread_t me = pthread_self(); + getTimes(); + for (i = 0; i < RtsFlags.ParFlags.nNodes; i++) { if (task_ids[i].id == me) { - task_ids[i].mut_time = usertime() - task_ids[i].gc_time; - task_ids[i].mut_etime = elapsedtime() + task_ids[i].mut_time = CurrentUserTime - task_ids[i].gc_time; + task_ids[i].mut_etime = CurrentElapsedTime - GCe_tot_time - task_ids[i].elapsedtimestart; if (task_ids[i].mut_time < 0.0) { task_ids[i].mut_time = 0.0; } @@ -599,6 +601,14 @@ stat_workerStop(void) } #endif +#if defined(SMP) +long int stat_getElapsedTime () +{ + getTimes(); + return CurrentElapsedTime; +} +#endif + /* ----------------------------------------------------------------------------- Called at the end of execution @@ -739,7 +749,8 @@ stat_exit(int alloc) fprintf(sf, "<>\n", total_collections, - AvgResidency*sizeof(W_)/ResidencySamples, + ResidencySamples == 0 ? 0 : + AvgResidency*sizeof(W_)/ResidencySamples, MaxResidency*sizeof(W_), ResidencySamples, (unsigned long)(mblocks_allocated * MBLOCK_SIZE / (1024L * 1024L)),