[pypy-commit] stmgc c8-binary-trx-length-per-thread: Implement simple binary adaptive transaction length

tobweber pypy.commits at gmail.com
Thu Jun 15 10:28:14 EDT 2017


Author: Tobias Weber <tobias_weber89 at gmx.de>
Branch: c8-binary-trx-length-per-thread
Changeset: r2074:abbe431338a8
Date: 2017-06-11 18:26 +0200
http://bitbucket.org/pypy/stmgc/changeset/abbe431338a8/

Log:	Implement simple binary adaptive transaction length

diff --git a/c8/stm/nursery.c b/c8/stm/nursery.c
--- a/c8/stm/nursery.c
+++ b/c8/stm/nursery.c
@@ -16,30 +16,15 @@
 static uintptr_t _stm_nursery_start;
 
 #define DEFAULT_FILL_MARK_NURSERY_BYTES (NURSERY_SIZE / 4)
-
-// #define LARGE_FILL_MARK_NURSERY_BYTES   DEFAULT_FILL_MARK_NURSERY_BYTES
 #define LARGE_FILL_MARK_NURSERY_BYTES   0x1000000000L
-// #define LARGE_FILL_MARK_NURSERY_BYTES   0x1000000000000000L
-
-#define STM_MIN_RELATIVE_TRANSACTION_LENGTH (0.00000001)
 
 static double get_new_transaction_length(stm_thread_local_t *tl, bool aborts) {
-    const int multiplier = 100;
-    double previous = tl->relative_transaction_length;
-    double new = previous;
+    double new = tl->relative_transaction_length;
     if (aborts) {
         tl->transaction_length_backoff = 3;
-        if (previous > STM_MIN_RELATIVE_TRANSACTION_LENGTH) {
-            new = previous / multiplier;
-        } else {
-            new = 0;
-        }
+        new = 0;
     } else if (tl->transaction_length_backoff == 0) {
-        if (previous - (STM_MIN_RELATIVE_TRANSACTION_LENGTH * 0.1) < 0) {
-            new = STM_MIN_RELATIVE_TRANSACTION_LENGTH;
-        } else if (previous < 1) {
-            new = previous * multiplier;
-        }
+        new = 1;
     } else { // not abort and backoff != 0
         tl->transaction_length_backoff -= 1;
     }
diff --git a/c8/stm/setup.c b/c8/stm/setup.c
--- a/c8/stm/setup.c
+++ b/c8/stm/setup.c
@@ -247,7 +247,7 @@
     tl->thread_local_counter = ++thread_local_counters;
 
     /* init single thread mode */
-    tl->relative_transaction_length = STM_MIN_RELATIVE_TRANSACTION_LENGTH;
+    tl->relative_transaction_length = 1;
     tl->transaction_length_backoff = 0;
 
     *_get_cpth(tl) = pthread_self();


More information about the pypy-commit mailing list