[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