Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision fd1f65e57529757738abc8508a18c80eb9ac6dce)
@@ -244,4 +244,8 @@
 	__cfadbg_print_safe(ready_queue, "Kernel : Pushing %p on cluster %p\n", thrd, cltr);
 
+	#if !defined(__CFA_NO_STATISTICS__)
+		const bool external = cltr == kernelTLS().this_processor->cltr;
+	#endif
+
 	// write timestamp
 	thrd->link.ts = rdtscl();
@@ -266,14 +270,15 @@
 		[i, local] = idx_from_r(r, preferred);
 
+		i %= __atomic_load_n( &lanes.count, __ATOMIC_RELAXED );
+
 		#if !defined(__CFA_NO_STATISTICS__)
-			if(local) {
-				__tls_stats()->ready.pick.push.local++;
-			}
-		#endif
-
-		i %= __atomic_load_n( &lanes.count, __ATOMIC_RELAXED );
-
-		#if !defined(__CFA_NO_STATISTICS__)
-			__tls_stats()->ready.pick.push.attempt++;
+			if(external) {
+				if(local) __atomic_fetch_add(&cltr->stats->ready.pick.ext.local, 1, __ATOMIC_RELAXED);
+				__atomic_fetch_add(&cltr->stats->ready.pick.ext.attempt, 1, __ATOMIC_RELAXED);
+			}
+			else {
+				if(local) __tls_stats()->ready.pick.push.local++;
+				__tls_stats()->ready.pick.push.attempt++;
+			}
 		#endif
 
@@ -310,8 +315,12 @@
 	// 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++;
+		if(external) {
+			if(local) __atomic_fetch_add(&cltr->stats->ready.pick.ext.lsuccess, 1, __ATOMIC_RELAXED);
+			__atomic_fetch_add(&cltr->stats->ready.pick.ext.success, 1, __ATOMIC_RELAXED);
+		}
+		else {
+			if(local) __tls_stats()->ready.pick.push.lsuccess++;
+			__tls_stats()->ready.pick.push.success++;
+		}
 	#endif
 
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
+++ libcfa/src/concurrency/stats.cfa	(revision fd1f65e57529757738abc8508a18c80eb9ac6dce)
@@ -13,4 +13,8 @@
 		stats->ready.pick.push.local    = 0;
 		stats->ready.pick.push.lsuccess = 0;
+		stats->ready.pick.ext.attempt  = 0;
+		stats->ready.pick.ext.success  = 0;
+		stats->ready.pick.ext.local    = 0;
+		stats->ready.pick.ext.lsuccess = 0;
 		stats->ready.pick.pop .probe    = 0;
 		stats->ready.pick.pop .attempt  = 0;
@@ -47,4 +51,8 @@
 		__atomic_fetch_add( &cltr->ready.pick.push.local   , proc->ready.pick.push.local   , __ATOMIC_SEQ_CST ); proc->ready.pick.push.local    = 0;
 		__atomic_fetch_add( &cltr->ready.pick.push.lsuccess, proc->ready.pick.push.lsuccess, __ATOMIC_SEQ_CST ); proc->ready.pick.push.lsuccess = 0;
+		__atomic_fetch_add( &cltr->ready.pick.ext.attempt  , proc->ready.pick.ext.attempt  , __ATOMIC_SEQ_CST ); proc->ready.pick.ext.attempt   = 0;
+		__atomic_fetch_add( &cltr->ready.pick.ext.success  , proc->ready.pick.ext.success  , __ATOMIC_SEQ_CST ); proc->ready.pick.ext.success   = 0;
+		__atomic_fetch_add( &cltr->ready.pick.ext.local    , proc->ready.pick.ext.local    , __ATOMIC_SEQ_CST ); proc->ready.pick.ext.local     = 0;
+		__atomic_fetch_add( &cltr->ready.pick.ext.lsuccess , proc->ready.pick.ext.lsuccess , __ATOMIC_SEQ_CST ); proc->ready.pick.ext.lsuccess  = 0;
 		__atomic_fetch_add( &cltr->ready.pick.pop .probe   , proc->ready.pick.pop .probe   , __ATOMIC_SEQ_CST ); proc->ready.pick.pop .probe    = 0;
 		__atomic_fetch_add( &cltr->ready.pick.pop .attempt , proc->ready.pick.pop .attempt , __ATOMIC_SEQ_CST ); proc->ready.pick.pop .attempt  = 0;
@@ -80,7 +88,9 @@
 		if( flags & CFA_STATS_READY_Q ) {
 			double push_len = ((double)ready.pick.push.attempt) / ready.pick.push.success;
+			double ext_len  = ((double)ready.pick.ext .attempt) / ready.pick.ext .success;
 			double pop_len  = ((double)ready.pick.pop .attempt) / ready.pick.pop .success;
 
 			double lpush_len = ((double)ready.pick.push.local) / ready.pick.push.lsuccess;
+			double lext_len  = ((double)ready.pick.ext .local) / ready.pick.ext .lsuccess;
 			double lpop_len  = ((double)ready.pick.pop .local) / ready.pick.pop .lsuccess;
 
@@ -89,4 +99,5 @@
 				"- total threads  : %'15" PRIu64 "run, %'15" PRIu64 "schd (%'" PRIu64 "mig )\n"
 				"- push avg probe : %'3.2lf, %'3.2lfl (%'15" PRIu64 " attempts, %'15" PRIu64 " locals)\n"
+				"- ext  avg probe : %'3.2lf, %'3.2lfl (%'15" PRIu64 " attempts, %'15" PRIu64 " locals)\n"
 				"- pop  avg probe : %'3.2lf, %'3.2lfl (%'15" PRIu64 " attempts, %'15" PRIu64 " locals)\n"
 				"- Idle Sleep     : %'15" PRIu64 "h, %'15" PRIu64 "c, %'15" PRIu64 "w, %'15" PRIu64 "e\n"
@@ -97,4 +108,5 @@
 				, ready.threads.migration
 				, push_len, lpush_len, ready.pick.push.attempt, ready.pick.push.local
+				, ext_len , lext_len , ready.pick.ext .attempt, ready.pick.ext .local
 				, pop_len , lpop_len , ready.pick.pop .attempt, ready.pick.pop .local
 				, ready.sleep.halts, ready.sleep.cancels, ready.sleep.wakes, ready.sleep.exits
Index: libcfa/src/concurrency/stats.hfa
===================================================================
--- libcfa/src/concurrency/stats.hfa	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
+++ libcfa/src/concurrency/stats.hfa	(revision fd1f65e57529757738abc8508a18c80eb9ac6dce)
@@ -31,4 +31,18 @@
 				volatile uint64_t lsuccess;
 			} push;
+
+			struct {
+				// number of attemps at pushing something
+				volatile uint64_t attempt;
+
+				// 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 to preferred queues
+				volatile uint64_t lsuccess;
+			} ext;
 
 			// Pop statistic
