[pypy-commit] stmgc parallel-pulling: add timing info for parallel-pulling. As expected, raytrace spends only ~1% of
Raemi
noreply at buildbot.pypy.org
Fri Jun 20 10:18:20 CEST 2014
Author: Remi Meier <remi.meier at inf.ethz.ch>
Branch: parallel-pulling
Changeset: r1257:e8a0753c37ff
Date: 2014-06-20 10:18 +0200
http://bitbucket.org/pypy/stmgc/changeset/e8a0753c37ff/
Log: add timing info for parallel-pulling. As expected, raytrace spends
only ~1% of its time pulling, threadworms spends ~0.13s. Both have a
huge "sync pause" time, so the biggest contribution to that is
probably the time required for all threads to reach the safe points.
diff --git a/c7/stm/core.c b/c7/stm/core.c
--- a/c7/stm/core.c
+++ b/c7/stm/core.c
@@ -607,6 +607,10 @@
if (list_count(lst)) {
dprintf(("pulling %lu objects from shared segment\n", list_count(lst)));
+ /* not completely accurate as it counts for the thread doing the
+ pulling (may be someone else during major collections) */
+ enum stm_time_e old_state = change_timing_state(STM_TIME_PULL_OBJS);
+
LIST_FOREACH_R(lst, object_t * /*item*/,
({
/* memcpy in the opposite direction than
@@ -615,6 +619,7 @@
}));
list_clear(lst);
+ change_timing_state(old_state);
}
}
diff --git a/c7/stm/timing.c b/c7/stm/timing.c
--- a/c7/stm/timing.c
+++ b/c7/stm/timing.c
@@ -64,6 +64,7 @@
"minor gc",
"major gc",
"sync pause",
+ "pull objs"
};
void stm_flush_timing(stm_thread_local_t *tl, int verbose)
diff --git a/c7/stmgc.h b/c7/stmgc.h
--- a/c7/stmgc.h
+++ b/c7/stmgc.h
@@ -71,6 +71,7 @@
STM_TIME_MINOR_GC,
STM_TIME_MAJOR_GC,
STM_TIME_SYNC_PAUSE,
+ STM_TIME_PULL_OBJS,
_STM_TIME_N
};
More information about the pypy-commit
mailing list