Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision c34ebf2e1c30febd459338ca6bff481ddda03a67)
+++ libcfa/src/concurrency/kernel.cfa	(revision 69fbc6164b2feaecf3c6adb2eedc0236a52d2eb6)
@@ -241,5 +241,5 @@
 
 	#if !defined(__CFA_NO_STATISTICS__)
-		print_stats = false;
+		print_stats = 0;
 		print_halts = false;
 	#endif
@@ -281,5 +281,5 @@
 
 	#if !defined(__CFA_NO_STATISTICS__)
-		print_stats = false;
+		print_stats = 0;
 		stats = alloc();
 		__init_stats( stats );
@@ -297,6 +297,6 @@
 
 	#if !defined(__CFA_NO_STATISTICS__)
-		if(this.print_stats) {
-			__print_stats( this.stats, true, this.name, (void*)&this );
+		if( 0 != this.print_stats ) {
+			__print_stats( this.stats, this.print_stats, true, this.name, (void*)&this );
 		}
 		free( this.stats );
@@ -568,6 +568,6 @@
 	#if !defined(__CFA_NO_STATISTICS__)
 		__tally_stats(proc->cltr->stats, &local_stats);
-		if(proc->print_stats) {
-			__print_stats( &local_stats, true, proc->name, (void*)proc );
+		if( 0 != proc->print_stats ) {
+			__print_stats( &local_stats, proc->print_stats, true, proc->name, (void*)proc );
 		}
 	#endif
Index: libcfa/src/concurrency/kernel.hfa
===================================================================
--- libcfa/src/concurrency/kernel.hfa	(revision c34ebf2e1c30febd459338ca6bff481ddda03a67)
+++ libcfa/src/concurrency/kernel.hfa	(revision 69fbc6164b2feaecf3c6adb2eedc0236a52d2eb6)
@@ -106,5 +106,5 @@
 
 	#if !defined(__CFA_NO_STATISTICS__)
-		bool print_stats;
+		int print_stats;
 		bool print_halts;
 	#endif
@@ -207,6 +207,6 @@
 
 	#if !defined(__CFA_NO_STATISTICS__)
-		bool print_stats;
 		struct __stats_t * stats;
+		int print_stats;
 	#endif
 };
@@ -229,10 +229,10 @@
 
 #if !defined(__CFA_NO_STATISTICS__)
-	static inline void print_stats_at_exit( cluster & this ) {
-		this.print_stats = true;
+	static inline void print_stats_at_exit( cluster & this, int flags ) {
+		this.print_stats |= flags;
 	}
 
-	static inline void print_stats_at_exit( processor & this ) {
-		this.print_stats = true;
+	static inline void print_stats_at_exit( processor & this, int flags ) {
+		this.print_stats |= flags;
 	}
 
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision c34ebf2e1c30febd459338ca6bff481ddda03a67)
+++ libcfa/src/concurrency/stats.cfa	(revision 69fbc6164b2feaecf3c6adb2eedc0236a52d2eb6)
@@ -73,90 +73,93 @@
 	}
 
-	void __print_stats( struct __stats_t * stats, bool cluster, const char * name, void * id ) with( *stats ) {
+	void __print_stats( struct __stats_t * stats, int flags, bool cluster, const char * name, void * id ) with( *stats ) {
 
-		double push_sur = (100.0 * ((double)ready.pick.push.success) / ready.pick.push.attempt);
-		double pop_sur  = (100.0 * ((double)ready.pick.pop .success) / ready.pick.pop .attempt);
+		if( flags & CFA_STATS_READY_Q ) {
+			double push_sur = (100.0 * ((double)ready.pick.push.success) / ready.pick.push.attempt);
+			double pop_sur  = (100.0 * ((double)ready.pick.pop .success) / ready.pick.pop .attempt);
 
-		double push_len = ((double)ready.pick.push.attempt) / ready.pick.push.success;
-		double pop_len  = ((double)ready.pick.pop .attempt) / ready.pick.pop .success;
+			double push_len = ((double)ready.pick.push.attempt) / ready.pick.push.success;
+			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_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;
+			double lpush_len = ((double)ready.pick.push.local) / ready.pick.push.lsuccess;
+			double lpop_len  = ((double)ready.pick.pop .local) / ready.pick.pop .lsuccess;
+
+			__cfaabi_bits_print_safe( STDOUT_FILENO,
+				"----- %s \"%s\" (%p) - Ready Q Stats -----\n"
+				"- total threads run      : %'15lu\n"
+				"- total threads scheduled: %'15lu\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"
+				"- thread migrations      : %'15lu\n"
+				"- Idle Sleep -\n"
+				"-- halts                 : %'15lu\n"
+				"-- cancelled halts       : %'15lu\n"
+				"-- schedule wake         : %'15lu\n"
+				"-- wake on exit          : %'15lu\n"
+				"\n"
+				, cluster ? "Cluster" : "Processor",  name, id
+				, ready.pick.pop.success
+				, ready.pick.push.success
+				, 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.threads.migration
+				, ready.sleep.halts, ready.sleep.cancels, ready.sleep.wakes, ready.sleep.exits
+			);
+		}
 
 		#if defined(HAVE_LINUX_IO_URING_H)
-			double avgrdy = ((double)io.submit_q.submit_avg.rdy) / io.submit_q.submit_avg.cnt;
-			double avgcsm = ((double)io.submit_q.submit_avg.csm) / io.submit_q.submit_avg.cnt;
-			double avgavl = ((double)io.submit_q.submit_avg.avl) / io.submit_q.submit_avg.cnt;
+			if( flags & CFA_STATS_IO ) {
+				double avgrdy = ((double)io.submit_q.submit_avg.rdy) / io.submit_q.submit_avg.cnt;
+				double avgcsm = ((double)io.submit_q.submit_avg.csm) / io.submit_q.submit_avg.cnt;
+				double avgavl = ((double)io.submit_q.submit_avg.avl) / io.submit_q.submit_avg.cnt;
 
-			double lavgv = 0;
-			double lavgb = 0;
-			if(io.submit_q.look_avg.cnt != 0) {
-				lavgv = ((double)io.submit_q.look_avg.val  ) / io.submit_q.look_avg.cnt;
-				lavgb = ((double)io.submit_q.look_avg.block) / io.submit_q.look_avg.cnt;
+				double lavgv = 0;
+				double lavgb = 0;
+				if(io.submit_q.look_avg.cnt != 0) {
+					lavgv = ((double)io.submit_q.look_avg.val  ) / io.submit_q.look_avg.cnt;
+					lavgb = ((double)io.submit_q.look_avg.block) / io.submit_q.look_avg.cnt;
+				}
+
+				double aavgv = 0;
+				double aavgb = 0;
+				if(io.submit_q.alloc_avg.cnt != 0) {
+					aavgv = ((double)io.submit_q.alloc_avg.val  ) / io.submit_q.alloc_avg.cnt;
+					aavgb = ((double)io.submit_q.alloc_avg.block) / io.submit_q.alloc_avg.cnt;
+				}
+
+				__cfaabi_bits_print_safe( STDOUT_FILENO,
+					"----- %s \"%s\" (%p) - I/O Stats -----\n"
+					"- total submit calls     : %'15lu\n"
+					"- avg ready entries      : %'18.2lf\n"
+					"- avg submitted entries  : %'18.2lf\n"
+					"- avg available entries  : %'18.2lf\n"
+					"- total ready search     : %'15lu\n"
+					"- avg ready search len   : %'18.2lf\n"
+					"- avg ready search block : %'18.2lf\n"
+					"- total alloc search     : %'15lu\n"
+					"- avg alloc search len   : %'18.2lf\n"
+					"- avg alloc search block : %'18.2lf\n"
+					"- total wait calls       : %'15lu   (%'lu slow, %'lu fast)\n"
+					"- avg completion/wait    : %'18.2lf\n"
+					"\n"
+					, cluster ? "Cluster" : "Processor",  name, id
+					, io.submit_q.submit_avg.cnt
+					, avgrdy, avgcsm, avgavl
+					, io.submit_q.look_avg.cnt
+					, lavgv, lavgb
+					, io.submit_q.alloc_avg.cnt
+					, aavgv, aavgb
+					, io.complete_q.completed_avg.slow_cnt + io.complete_q.completed_avg.fast_cnt
+					, io.complete_q.completed_avg.slow_cnt,  io.complete_q.completed_avg.fast_cnt
+					, ((double)io.complete_q.completed_avg.val) / (io.complete_q.completed_avg.slow_cnt + io.complete_q.completed_avg.fast_cnt)
+				);
 			}
-
-			double aavgv = 0;
-			double aavgb = 0;
-			if(io.submit_q.alloc_avg.cnt != 0) {
-				aavgv = ((double)io.submit_q.alloc_avg.val  ) / io.submit_q.alloc_avg.cnt;
-				aavgb = ((double)io.submit_q.alloc_avg.block) / io.submit_q.alloc_avg.cnt;
-			}
-		#endif
-
-		__cfaabi_bits_print_safe( STDOUT_FILENO,
-			"----- %s \"%s\" (%p) - Ready Q Stats -----\n"
-			"- total threads run      : %'15lu\n"
-			"- total threads scheduled: %'15lu\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"
-			"- thread migrations      : %'15lu\n"
-			"- Idle Sleep -\n"
-			"-- halts                 : %'15lu\n"
-			"-- cancelled halts       : %'15lu\n"
-			"-- schedule wake         : %'15lu\n"
-			"-- wake on exit          : %'15lu\n"
-			"\n"
-			, cluster ? "Cluster" : "Processor",  name, id
-			, ready.pick.pop.success
-			, ready.pick.push.success
-			, 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.threads.migration
-			, ready.sleep.halts, ready.sleep.cancels, ready.sleep.wakes, ready.sleep.exits
-		);
-		#if defined(HAVE_LINUX_IO_URING_H)
-			__cfaabi_bits_print_safe( STDOUT_FILENO,
-				"----- %s \"%s\" (%p) - I/O Stats -----\n"
-				"- total submit calls     : %'15lu\n"
-				"- avg ready entries      : %'18.2lf\n"
-				"- avg submitted entries  : %'18.2lf\n"
-				"- avg available entries  : %'18.2lf\n"
-				"- total ready search     : %'15lu\n"
-				"- avg ready search len   : %'18.2lf\n"
-				"- avg ready search block : %'18.2lf\n"
-				"- total alloc search     : %'15lu\n"
-				"- avg alloc search len   : %'18.2lf\n"
-				"- avg alloc search block : %'18.2lf\n"
-				"- total wait calls       : %'15lu   (%'lu slow, %'lu fast)\n"
-				"- avg completion/wait    : %'18.2lf\n"
-				"\n"
-				, cluster ? "Cluster" : "Processor",  name, id
-				, io.submit_q.submit_avg.cnt
-				, avgrdy, avgcsm, avgavl
-				, io.submit_q.look_avg.cnt
-				, lavgv, lavgb
-				, io.submit_q.alloc_avg.cnt
-				, aavgv, aavgb
-				, io.complete_q.completed_avg.slow_cnt + io.complete_q.completed_avg.fast_cnt
-				, io.complete_q.completed_avg.slow_cnt,  io.complete_q.completed_avg.fast_cnt
-				, ((double)io.complete_q.completed_avg.val) / (io.complete_q.completed_avg.slow_cnt + io.complete_q.completed_avg.fast_cnt)
-			);
 		#endif
 	}
Index: libcfa/src/concurrency/stats.hfa
===================================================================
--- libcfa/src/concurrency/stats.hfa	(revision c34ebf2e1c30febd459338ca6bff481ddda03a67)
+++ libcfa/src/concurrency/stats.hfa	(revision 69fbc6164b2feaecf3c6adb2eedc0236a52d2eb6)
@@ -7,6 +7,13 @@
 	static inline void __init_stats( struct __stats_t * ) {}
 	static inline void __tally_stats( struct __stats_t *, struct __stats_t * ) {}
-	static inline void __print_stats( struct __stats_t *, bool, const char *, void * ) {}
+	static inline void __print_stats( struct __stats_t *, int, bool, const char *, void * ) {}
 #else
+	enum {
+		CFA_STATS_READY_Q  = 0x01,
+		#if defined(HAVE_LINUX_IO_URING_H)
+			CFA_STATS_IO = 0x02,
+		#endif
+	};
+
 	struct __attribute__((aligned(64))) __stats_readQ_t {
 		struct {
@@ -96,5 +103,5 @@
 	void __init_stats ( struct __stats_t * );
 	void __tally_stats( struct __stats_t *, struct __stats_t * );
-	void __print_stats( struct __stats_t *, bool, const char *, void * );
+	void __print_stats( struct __stats_t *, int, bool, const char *, void * );
 #endif
 
