Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision 0fc447c38ee7b02d6cdb7bd08aef617ade5852c7)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision 25337e082faf7ec7364ea6d7d9c16c8e76e0bf5e)
@@ -303,9 +303,4 @@
 			lanes.help[idx].dst = 0;
 			lanes.help[idx].tri = 0;
-		}
-
-		caches = alloc( cpu_info.llc_count );
-		for( idx; (size_t)cpu_info.llc_count ) {
-			(caches[idx]){};
 		}
 	#else
@@ -506,22 +501,4 @@
 	}
 
-	static inline int pop_getcpu(processor * proc, __ready_queue_caches_t * caches) {
-		const int prv = proc->rdq.cpu;
-		const int cpu = __kernel_getcpu();
-		if( prv != proc->rdq.cpu ) {
-			unsigned pidx = cpu_info.llc_map[prv].cache;
-			/* paranoid */ verify(pidx < cpu_info.llc_count);
-
-			unsigned nidx = cpu_info.llc_map[cpu].cache;
-			/* paranoid */ verify(pidx < cpu_info.llc_count);
-
-			depart(caches[pidx]);
-			arrive(caches[nidx]);
-
-			__STATS( /* cpu migs++ */ )
-		}
-		return proc->rdq.cpu = cpu;
-	}
-
 	// Pop from the ready queue from a given cluster
 	__attribute__((hot)) thread$ * pop_fast(struct cluster * cltr) with (cltr->ready_queue) {
@@ -530,6 +507,5 @@
 
 		processor * const proc = kernelTLS().this_processor;
-		const int cpu = pop_getcpu( proc, caches );
-		// const int cpu = __kernel_getcpu();
+		const int cpu = __kernel_getcpu();
 		/* paranoid */ verify(cpu >= 0);
 		/* paranoid */ verify(cpu < cpu_info.hthrd_count);
@@ -548,5 +524,5 @@
 			unsigned long long max = 0;
 			for(i; READYQ_SHARD_FACTOR) {
-				unsigned long long tsc = moving_average(ctsc - ts(lanes.data[start + i]), lanes.tscs[start + i].ma);
+				unsigned long long tsc = moving_average(ctsc, ts(lanes.data[start + i]), lanes.tscs[start + i].ma);
 				if(tsc > max) max = tsc;
 			}
@@ -569,5 +545,5 @@
 			unsigned long long max = 0;
 			for(i; READYQ_SHARD_FACTOR) {
-				unsigned long long tsc = moving_average(ctsc - ts(lanes.data[start + i]), lanes.tscs[start + i].ma);
+				unsigned long long tsc = moving_average(ctsc, ts(lanes.data[start + i]), lanes.tscs[start + i].ma);
 				if(tsc > max) max = tsc;
 			}
@@ -577,6 +553,5 @@
 				proc->rdq.target = MAX;
 				lanes.help[target / READYQ_SHARD_FACTOR].tri++;
-				if(moving_average(ctsc - lanes.tscs[target].tv, lanes.tscs[target].ma) > cutoff) {
-					__STATS( __tls_stats()->ready.pop.helped[target]++; )
+				if(moving_average(ctsc, lanes.tscs[target].tv, lanes.tscs[target].ma) > cutoff) {
 					thread$ * t = try_pop(cltr, target __STATS(, __tls_stats()->ready.pop.help));
 					proc->rdq.last = target;
@@ -587,6 +562,5 @@
 
 			unsigned last = proc->rdq.last;
-			if(last != MAX && moving_average(ctsc - lanes.tscs[last].tv, lanes.tscs[last].ma) > cutoff) {
-				__STATS( __tls_stats()->ready.pop.helped[last]++; )
+			if(last != MAX && moving_average(ctsc, lanes.tscs[last].tv, lanes.tscs[last].ma) > cutoff) {
 				thread$ * t = try_pop(cltr, last __STATS(, __tls_stats()->ready.pop.help));
 				if(t) return t;
