Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision de917da32a8b87a8ec448932eda4c80efdcf0e23)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision c7816be39e9fafbbe77688acfe2381ca95e39035)
@@ -219,4 +219,8 @@
 	thrd->link.ts = rdtscl();
 
+	#if defined(BIAS) && !defined(__CFA_NO_STATISTICS__)
+		bool local = false;
+	#endif
+
 	// Try to pick a lane and lock it
 	unsigned i;
@@ -234,4 +238,5 @@
 
 				#if !defined(__CFA_NO_STATISTICS__)
+					local = true;
 					__tls_stats()->ready.pick.push.local++;
 				#endif
@@ -241,4 +246,5 @@
 				// Use all queues
 				i = rhigh;
+				local = false;
 			}
 		#else
@@ -276,4 +282,7 @@
 	// Update statistics
 	#if !defined(__CFA_NO_STATISTICS__)
+		#if defined(BIAS)
+			if( local ) __tls_stats()->ready.pick.push.lsuccess++;
+		#endif
 		__tls_stats()->ready.pick.push.success++;
 	#endif
@@ -299,4 +308,7 @@
 		unsigned i,j;
 		#if defined(BIAS)
+			#if !defined(__CFA_NO_STATISTICS__)
+				bool local = false;
+			#endif
 			uint64_t r = __tls_rand();
 			unsigned rlow  = r % BIAS;
@@ -313,4 +325,5 @@
 
 				#if !defined(__CFA_NO_STATISTICS__)
+					local = true;
 					__tls_stats()->ready.pick.pop.local++;
 				#endif
@@ -332,5 +345,10 @@
 		// try popping from the 2 picked lists
 		struct $thread * thrd = try_pop(cltr, i, j);
-		if(thrd) return thrd;
+		if(thrd) {
+			#if defined(BIAS) && !defined(__CFA_NO_STATISTICS__)
+				if( local ) __tls_stats()->ready.pick.pop.lsuccess++;
+			#endif
+			return thrd;
+		}
 	}
 
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision de917da32a8b87a8ec448932eda4c80efdcf0e23)
+++ libcfa/src/concurrency/stats.cfa	(revision c7816be39e9fafbbe77688acfe2381ca95e39035)
@@ -8,10 +8,13 @@
 #if !defined(__CFA_NO_STATISTICS__)
 	void __init_stats( struct __stats_t * stats ) {
-		stats->ready.pick.push.attempt = 0;
-		stats->ready.pick.push.success = 0;
-		stats->ready.pick.pop .probe   = 0;
-		stats->ready.pick.pop .attempt = 0;
-		stats->ready.pick.pop .local   = 0;
-		stats->ready.pick.pop .success = 0;
+		stats->ready.pick.push.attempt  = 0;
+		stats->ready.pick.push.success  = 0;
+		stats->ready.pick.push.local    = 0;
+		stats->ready.pick.push.lsuccess = 0;
+		stats->ready.pick.pop .probe    = 0;
+		stats->ready.pick.pop .attempt  = 0;
+		stats->ready.pick.pop .success  = 0;
+		stats->ready.pick.pop .local    = 0;
+		stats->ready.pick.pop .lsuccess = 0;
 		stats->ready.sleep.halts   = 0;
 		stats->ready.sleep.cancels = 0;
@@ -37,11 +40,13 @@
 
 	void __tally_stats( struct __stats_t * cltr, struct __stats_t * proc ) {
-		__atomic_fetch_add( &cltr->ready.pick.push.attempt, proc->ready.pick.push.attempt, __ATOMIC_SEQ_CST );
-		__atomic_fetch_add( &cltr->ready.pick.push.local  , proc->ready.pick.push.local  , __ATOMIC_SEQ_CST );
-		__atomic_fetch_add( &cltr->ready.pick.push.success, proc->ready.pick.push.success, __ATOMIC_SEQ_CST );
-		__atomic_fetch_add( &cltr->ready.pick.pop .probe  , proc->ready.pick.pop .probe  , __ATOMIC_SEQ_CST );
-		__atomic_fetch_add( &cltr->ready.pick.pop .attempt, proc->ready.pick.pop .attempt, __ATOMIC_SEQ_CST );
-		__atomic_fetch_add( &cltr->ready.pick.pop .local  , proc->ready.pick.pop .local  , __ATOMIC_SEQ_CST );
-		__atomic_fetch_add( &cltr->ready.pick.pop .success, proc->ready.pick.pop .success, __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.push.attempt , proc->ready.pick.push.attempt , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.push.success , proc->ready.pick.push.success , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.push.local   , proc->ready.pick.push.local   , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.push.lsuccess, proc->ready.pick.push.lsuccess, __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.pop .probe   , proc->ready.pick.pop .probe   , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.pop .attempt , proc->ready.pick.pop .attempt , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.pop .success , proc->ready.pick.pop .success , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.pop .local   , proc->ready.pick.pop .local   , __ATOMIC_SEQ_CST );
+		__atomic_fetch_add( &cltr->ready.pick.pop .lsuccess, proc->ready.pick.pop .lsuccess, __ATOMIC_SEQ_CST );
 		__atomic_fetch_add( &cltr->ready.sleep.halts  , proc->ready.sleep.halts  , __ATOMIC_SEQ_CST );
 		__atomic_fetch_add( &cltr->ready.sleep.cancels, proc->ready.sleep.cancels, __ATOMIC_SEQ_CST );
@@ -74,4 +79,10 @@
 		double pop_len  = ((double)ready.pick.pop .attempt) / ready.pick.pop .success;
 
+		double lpush_sur = (100.0 * ((double)ready.pick.push.lsuccess) / ready.pick.push.local);
+		double lpop_sur  = (100.0 * ((double)ready.pick.pop .lsuccess) / ready.pick.pop .local);
+
+		double lpush_len = ((double)ready.pick.push.local) / ready.pick.push.lsuccess;
+		double lpop_len  = ((double)ready.pick.pop .local) / ready.pick.pop .lsuccess;
+
 		#if defined(HAVE_LINUX_IO_URING_H)
 			double avgrdy = ((double)io.submit_q.submit_avg.rdy) / io.submit_q.submit_avg.cnt;
@@ -98,6 +109,8 @@
 			"- total threads run      : %'15lu\n"
 			"- total threads scheduled: %'15lu\n"
-			"- push average probe len : %'18.2lf, %'18.2lf%% (%'15lu attempts, %'15lu local)\n"
-			"- pop  average probe len : %'18.2lf, %'18.2lf%% (%'15lu attempts, %'15lu local)\n"
+			"- push average probe len : %'18.2lf, %'18.2lf%% (%'15lu attempts)\n"
+			"- pop  average probe len : %'18.2lf, %'18.2lf%% (%'15lu attempts)\n"
+			"- local push avg prb len : %'18.2lf, %'18.2lf%% (%'15lu attempts)\n"
+			"- local pop  avg prb len : %'18.2lf, %'18.2lf%% (%'15lu attempts)\n"
 			"- Idle Sleep -\n"
 			"-- halts                 : %'15lu\n"
@@ -123,6 +136,8 @@
 			, ready.pick.pop.success
 			, ready.pick.push.success
-			, push_len, push_sur, ready.pick.push.attempt, ready.pick.push.local
-			, pop_len , pop_sur , ready.pick.pop .attempt, ready.pick.pop .local
+			, push_len, push_sur, ready.pick.push.attempt
+			, pop_len , pop_sur , ready.pick.pop .attempt
+			, lpush_len, lpush_sur, ready.pick.push.local
+			, lpop_len , lpop_sur , ready.pick.pop .local
 			, ready.sleep.halts, ready.sleep.cancels, ready.sleep.wakes, ready.sleep.exits
 			#if defined(HAVE_LINUX_IO_URING_H)
Index: libcfa/src/concurrency/stats.hfa
===================================================================
--- libcfa/src/concurrency/stats.hfa	(revision de917da32a8b87a8ec448932eda4c80efdcf0e23)
+++ libcfa/src/concurrency/stats.hfa	(revision c7816be39e9fafbbe77688acfe2381ca95e39035)
@@ -16,9 +16,12 @@
 				volatile uint64_t attempt;
 
-				// number of attemps at pushing something something to preferred queues
+				// number of successes at pushing
+				volatile uint64_t success;
+
+				// number of attemps at pushing something to preferred queues
 				volatile uint64_t local;
 
-				// number of successes at pushing
-				volatile uint64_t success;
+				// number of successes at pushing to preferred queues
+				volatile uint64_t lsuccess;
 			} push;
 
@@ -33,9 +36,12 @@
 				volatile uint64_t attempt;
 
-				// number of attemps at poping something from preferred queues
+				// number of successes at poping
+				volatile uint64_t success;
+
+				// number of attemps at poping something to preferred queues
 				volatile uint64_t local;
 
-				// number of successes at poping
-				volatile uint64_t success;
+				// number of successes at poping to preferred queues
+				volatile uint64_t lsuccess;
 			} pop;
 		} pick;
