Author: Tobias Weber <tobias_webe...@gmx.de>
Branch: c8-tcp-style-trx-length
Changeset: r2139:6a3c6e601284
Date: 2017-07-24 11:10 +0200
http://bitbucket.org/pypy/stmgc/changeset/6a3c6e601284/

Log:    Set backoff to best working value so far and re-enable slow start

diff --git a/c8/stm/nursery.c b/c8/stm/nursery.c
--- a/c8/stm/nursery.c
+++ b/c8/stm/nursery.c
@@ -23,7 +23,7 @@
 
 // corresponds to ~4 KB nursery fill
 #define STM_MIN_RELATIVE_TRANSACTION_LENGTH (0.000001)
-#define BACKOFF_COUNT (5)
+#define BACKOFF_COUNT (20)
 #define BACKOFF_MULTIPLIER (BACKOFF_COUNT / 
-log10(STM_MIN_RELATIVE_TRANSACTION_LENGTH))
 
 static inline void set_backoff(stm_thread_local_t *tl, double rel_trx_len) {
@@ -32,10 +32,10 @@
     backoff is <BACKOFF_COUNT> + b at default trx length,
     linear decrease to b at max trx length */
     const int b = 5;
-    tl->transaction_length_backoff =
-        (int)((BACKOFF_MULTIPLIER * -log10(rel_trx_len)) + b);
+    int new_backoff = (int)((BACKOFF_MULTIPLIER * -log10(rel_trx_len)) + b);
+    tl->transaction_length_backoff = new_backoff;
     // printf("thread %d, backoff %d\n", tl->thread_local_counter, 
tl->transaction_length_backoff);
-    tl->linear_transaction_length_increment = rel_trx_len / (BACKOFF_COUNT + 
b);
+    tl->linear_transaction_length_increment = rel_trx_len / new_backoff;
 }
 
 static inline double get_new_transaction_length(stm_thread_local_t *tl, bool 
aborts) {
@@ -55,10 +55,10 @@
         if (new > 1) {
             new = 1;
         }
-        // if (tl->linear_transaction_length_increment != 0) {
-        //     // thread had to abort before: slow start
-        //     set_backoff(tl, new);
-        // }
+        if (tl->linear_transaction_length_increment != 0) {
+            // thread had to abort before: slow start
+            set_backoff(tl, new);
+        }
     } else { // not abort and backoff != 0
         // in backoff, linear increase up to 1
         new = previous + tl->linear_transaction_length_increment;
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to