Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 7bfc849b1e747001a02088452ff80d68cf72b4cc)
+++ libcfa/src/concurrency/kernel.cfa	(revision 29cb30205cfe5f1c1292791fb73870b5ea4f8d7d)
@@ -490,4 +490,8 @@
 	$thread * thrd_src = kernelTLS.this_thread;
 
+	#if !defined(__CFA_NO_STATISTICS__)
+		struct processor * last_proc = kernelTLS.this_processor;
+	#endif
+
 	// Run the thread on this processor
 	{
@@ -504,4 +508,10 @@
 	}
 
+	#if !defined(__CFA_NO_STATISTICS__)
+		if(last_proc != kernelTLS.this_processor) {
+			__tls_stats()->ready.threads.migration++;
+		}
+	#endif
+
 	/* paranoid */ verify( ! kernelTLS.preemption_state.enabled );
 	/* paranoid */ verifyf( ((uintptr_t)thrd_src->context.SP) < ((uintptr_t)__get_stack(thrd_src->curr_cor)->base ), "ERROR : Returning $thread %p has been corrupted.\n StackPointer too small.\n", thrd_src );
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision 7bfc849b1e747001a02088452ff80d68cf72b4cc)
+++ libcfa/src/concurrency/stats.cfa	(revision 29cb30205cfe5f1c1292791fb73870b5ea4f8d7d)
@@ -17,4 +17,5 @@
 		stats->ready.pick.pop .local    = 0;
 		stats->ready.pick.pop .lsuccess = 0;
+		stats->ready.threads.migration = 0;
 		stats->ready.sleep.halts   = 0;
 		stats->ready.sleep.cancels = 0;
@@ -49,4 +50,5 @@
 		__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.threads.migration, proc->ready.threads.migration, __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 );
@@ -113,4 +115,5 @@
 			"- local push avg prb len : %'18.2lf, %'18.2lf%% (%'15lu attempts)\n"
 			"- local pop  avg prb len : %'18.2lf, %'18.2lf%% (%'15lu attempts)\n"
+			"- thread migrations      : %'15lu\n"
 			"- Idle Sleep -\n"
 			"-- halts                 : %'15lu\n"
@@ -140,4 +143,5 @@
 			, lpush_len, lpush_sur, ready.pick.push.local
 			, lpop_len , lpop_sur , ready.pick.pop .local
+			, ready.threads.migration
 			, 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 7bfc849b1e747001a02088452ff80d68cf72b4cc)
+++ libcfa/src/concurrency/stats.hfa	(revision 29cb30205cfe5f1c1292791fb73870b5ea4f8d7d)
@@ -46,4 +46,7 @@
 			} pop;
 		} pick;
+		struct {
+			volatile uint64_t migration;
+		} threads;
 		struct {
 			volatile uint64_t halts;
