1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-27 01:01:52 -07:00

Add time series for per-trace mortality.

Copied from Perforce
 Change: 194538
This commit is contained in:
Gareth Rees 2018-07-09 16:29:37 +01:00
parent f57b5d54db
commit 9fe19e67fb
3 changed files with 14 additions and 7 deletions

View file

@ -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 */ \

View file

@ -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);
}
}

View file

@ -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):