Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 45b9b210ba1573f2cbe0ef1dfa968d6a501c6469)
+++ libcfa/src/concurrency/kernel.cfa	(revision 938885d37b31a7fbc5553f3d8538c2b6498afd42)
@@ -171,6 +171,4 @@
 		preemption_scope scope = { this };
 
-		__STATS( unsigned long long last_tally = rdtscl(); )
-
 		// if we need to run some special setup, now is the time to do it.
 		if(this->init.thrd) {
@@ -258,12 +256,4 @@
 			// Are we done?
 			if( __atomic_load_n(&this->do_terminate, __ATOMIC_SEQ_CST) ) break MAIN_LOOP;
-
-			#if !defined(__CFA_NO_STATISTICS__)
-				unsigned long long curr = rdtscl();
-				if(curr > (last_tally + 500000000)) {
-					__tally_stats(this->cltr->stats, __cfaabi_tls.this_stats);
-					last_tally = curr;
-				}
-			#endif
 
 			if(this->io.pending && !this->io.dirty) {
@@ -918,5 +908,32 @@
 	}
 
+	static void crawl_list( cluster * cltr, dlist(processor, processor) & list, unsigned count ) {
+		/* paranoid */ verify( cltr->stats );
+
+		processor * it = &list`first;
+		for(unsigned i = 0; i < count; i++) {
+			/* paranoid */ verifyf( it, "Unexpected null iterator, at index %u of %u\n", i, count);
+			/* paranoid */ verify( it->local_data->this_stats );
+			__tally_stats( cltr->stats, it->local_data->this_stats );
+			it = &(*it)`next;
+		}
+	}
+
+	void crawl_cluster_stats( cluster & this ) {
+		// Stop the world, otherwise stats could get really messed-up
+		// this doesn't solve all problems but does solve many
+		// so it's probably good enough
+		uint_fast32_t last_size = ready_mutate_lock();
+
+			crawl_list(&this, this.procs.actives, this.procs.total - this.procs.idle);
+			crawl_list(&this, this.procs.idles  , this.procs.idle );
+
+		// Unlock the RWlock
+		ready_mutate_unlock( last_size );
+	}
+
+
 	void print_stats_now( cluster & this, int flags ) {
+		crawl_cluster_stats( this );
 		__print_stats( this.stats, this.print_stats, "Cluster", this.name, (void*)&this );
 	}
