diff options
-rw-r--r-- | rts/Capability.c | 18 | ||||
-rw-r--r-- | rts/Capability.h | 6 | ||||
-rw-r--r-- | rts/Sparks.c | 16 | ||||
-rw-r--r-- | rts/Sparks.h | 9 | ||||
-rw-r--r-- | rts/Stats.c | 20 |
5 files changed, 36 insertions, 33 deletions
diff --git a/rts/Capability.c b/rts/Capability.c index a9bb743654..e12bf994f3 100644 --- a/rts/Capability.c +++ b/rts/Capability.c @@ -94,11 +94,11 @@ findSpark (Capability *cap) // slower (prsa) and doesn't affect the others. spark = tryStealSpark(cap->sparks); while (spark != NULL && fizzledSpark(spark)) { - cap->sparks_fizzled++; + cap->spark_stats.fizzled++; spark = tryStealSpark(cap->sparks); } if (spark != NULL) { - cap->sparks_converted++; + cap->spark_stats.converted++; // Post event for running a spark from capability's own pool. traceEventRunSpark(cap, cap->r.rCurrentTSO); @@ -127,7 +127,7 @@ findSpark (Capability *cap) spark = tryStealSpark(robbed->sparks); while (spark != NULL && fizzledSpark(spark)) { - cap->sparks_fizzled++; + cap->spark_stats.fizzled++; spark = tryStealSpark(robbed->sparks); } if (spark == NULL && !emptySparkPoolCap(robbed)) { @@ -137,7 +137,7 @@ findSpark (Capability *cap) } if (spark != NULL) { - cap->sparks_converted++; + cap->spark_stats.converted++; traceEventStealSpark(cap, cap->r.rCurrentTSO, robbed->no); @@ -232,11 +232,11 @@ initCapability( Capability *cap, nat i ) cap->returning_tasks_hd = NULL; cap->returning_tasks_tl = NULL; cap->inbox = (Message*)END_TSO_QUEUE; - cap->sparks_created = 0; - cap->sparks_dud = 0; - cap->sparks_converted = 0; - cap->sparks_gcd = 0; - cap->sparks_fizzled = 0; + cap->spark_stats.created = 0; + cap->spark_stats.dud = 0; + cap->spark_stats.converted = 0; + cap->spark_stats.gcd = 0; + cap->spark_stats.fizzled = 0; #endif cap->f.stgEagerBlackholeInfo = (W_)&__stg_EAGER_BLACKHOLE_info; diff --git a/rts/Capability.h b/rts/Capability.h index d380af9cff..2037989612 100644 --- a/rts/Capability.h +++ b/rts/Capability.h @@ -98,11 +98,7 @@ struct Capability_ { SparkPool *sparks; // Stats on spark creation/conversion - nat sparks_created; - nat sparks_dud; - nat sparks_converted; - nat sparks_gcd; - nat sparks_fizzled; + SparkCounters spark_stats; #endif // Per-capability STM-related data diff --git a/rts/Sparks.c b/rts/Sparks.c index 5c78055e8c..d358ae6660 100644 --- a/rts/Sparks.c +++ b/rts/Sparks.c @@ -65,9 +65,9 @@ newSpark (StgRegTable *reg, StgClosure *p) if (!fizzledSpark(p)) { pushWSDeque(pool,p); - cap->sparks_created++; + cap->spark_stats.created++; } else { - cap->sparks_dud++; + cap->spark_stats.dud++; } return 1; @@ -173,7 +173,7 @@ pruneSparkQueue (Capability *cap) // evaluated, but it doesn't hurt to have this check for // robustness. pruned_sparks++; - cap->sparks_fizzled++; + cap->spark_stats.fizzled++; } else { info = spark->header.info; if (IS_FORWARDING_PTR(info)) { @@ -185,7 +185,7 @@ pruneSparkQueue (Capability *cap) n++; } else { pruned_sparks++; // discard spark - cap->sparks_fizzled++; + cap->spark_stats.fizzled++; } } else if (HEAP_ALLOCED(spark)) { if ((Bdescr((P_)spark)->flags & BF_EVACUATED)) { @@ -195,11 +195,11 @@ pruneSparkQueue (Capability *cap) n++; } else { pruned_sparks++; // discard spark - cap->sparks_fizzled++; + cap->spark_stats.fizzled++; } } else { pruned_sparks++; // discard spark - cap->sparks_gcd++; + cap->spark_stats.gcd++; } } else { if (INFO_PTR_TO_STRUCT(info)->type == THUNK_STATIC) { @@ -209,11 +209,11 @@ pruneSparkQueue (Capability *cap) n++; } else { pruned_sparks++; // discard spark - cap->sparks_gcd++; + cap->spark_stats.gcd++; } } else { pruned_sparks++; // discard spark - cap->sparks_fizzled++; + cap->spark_stats.fizzled++; } } } diff --git a/rts/Sparks.h b/rts/Sparks.h index e3ddc0cfaa..c987a94960 100644 --- a/rts/Sparks.h +++ b/rts/Sparks.h @@ -15,6 +15,15 @@ /* typedef for SparkPool in RtsTypes.h */ +/* Stats on spark creation/conversion */ +typedef struct { + StgWord created; + StgWord dud; + StgWord converted; + StgWord gcd; + StgWord fizzled; +} SparkCounters; + #if defined(THREADED_RTS) typedef WSDeque SparkPool; diff --git a/rts/Stats.c b/rts/Stats.c index 9fc702a2a3..04b091cd3a 100644 --- a/rts/Stats.c +++ b/rts/Stats.c @@ -629,21 +629,19 @@ stat_exit(int alloc) { nat i; - lnat sparks_created = 0; - lnat sparks_dud = 0; - lnat sparks_converted = 0; - lnat sparks_gcd = 0; - lnat sparks_fizzled = 0; + SparkCounters sparks = { 0, 0, 0, 0, 0}; for (i = 0; i < n_capabilities; i++) { - sparks_created += capabilities[i].sparks_created; - sparks_dud += capabilities[i].sparks_dud; - sparks_converted += capabilities[i].sparks_converted; - sparks_gcd += capabilities[i].sparks_gcd; - sparks_fizzled += capabilities[i].sparks_fizzled; + sparks.created += capabilities[i].spark_stats.created; + sparks.dud += capabilities[i].spark_stats.dud; + sparks.converted += capabilities[i].spark_stats.converted; + sparks.gcd += capabilities[i].spark_stats.gcd; + sparks.fizzled += capabilities[i].spark_stats.fizzled; } statsPrintf(" SPARKS: %ld (%ld converted, %ld dud, %ld GC'd, %ld fizzled)\n\n", - sparks_created + sparks_dud, sparks_converted, sparks_dud, sparks_gcd, sparks_fizzled); + sparks.created + sparks.dud, + sparks.converted, sparks.dud, + sparks.gcd, sparks.fizzled); } #endif |