diff --git a/mps/code/eventdef.h b/mps/code/eventdef.h index 8d495dcc0a6..0477c2bca0a 100644 --- a/mps/code/eventdef.h +++ b/mps/code/eventdef.h @@ -716,7 +716,8 @@ PARAM(X, 3, W, condemned) /* bytes condemned in generation */ \ PARAM(X, 4, W, forwarded) /* bytes forwarded from generation */ \ PARAM(X, 5, W, preservedInPlace) /* bytes preserved in generation */ \ - PARAM(X, 6, D, mortality) /* updated mortality */ + PARAM(X, 6, D, mortalityTrace) /* mortality (in last trace only) */ \ + PARAM(X, 7, D, mortalityAverage) /* mortality (moving average) */ #define EVENT_LabelPointer_PARAMS(PARAM, X) \ PARAM(X, 0, P, pointer) /* pointer */ \ diff --git a/mps/code/locus.c b/mps/code/locus.c index 3781a1408f5..e8919b159fe 100644 --- a/mps/code/locus.c +++ b/mps/code/locus.c @@ -214,8 +214,9 @@ static void genDescEndTrace(GenDesc gen, Trace trace) double mortality = 1.0 - survived / (double)stats->condemned; double alpha = LocusMortalityALPHA; gen->mortality = gen->mortality * (1 - alpha) + mortality * alpha; - EVENT7(TraceEndGen, trace->arena, trace, gen, stats->condemned, - stats->forwarded, stats->preservedInPlace, gen->mortality); + EVENT8(TraceEndGen, trace->arena, trace, gen, stats->condemned, + stats->forwarded, stats->preservedInPlace, mortality, + gen->mortality); } } diff --git a/mps/tool/monitor b/mps/tool/monitor index af349bb723e..96b9154b753 100755 --- a/mps/tool/monitor +++ b/mps/tool/monitor @@ -302,17 +302,22 @@ class Gen(EventHandler): def GenInit(self, t, event): self._serial = serial = event.serial - self._mortality = mortality = TimeSeries() + self._mortality_trace = mortality_trace = TimeSeries() self._model.add_time_series( - self, mortality, "fraction", f"mortality", - f"mortality of data in generation") + self, mortality_trace, "fraction", f"mortality.trace", + f"mortality of data in generation, per trace") + self._mortality_average = mortality_average = TimeSeries() + self._model.add_time_series( + self, mortality_average, "fraction", f"mortality.avg", + f"mortality of data in generation, moving average") self._ref_size = ref_size = TimeSeries() self._model.add_time_series( self, ref_size, "bytes", f"ref", f"size of segments referencing generation") def TraceEndGen(self, t, event): - self._mortality.append(t, event.mortality) + self._mortality_trace.append(t, event.mortalityTrace) + self._mortality_average.append(t, event.mortalityAverage) class Arena(EventHandler):