Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision 7cf3b1d8c069acc5052d1134b294cb0be126a478)
+++ libcfa/src/concurrency/io.cfa	(revision 70b4aeb98c282486fc4418438ec460c81a235669)
@@ -306,5 +306,10 @@
 		ctx->proc->io.pending = true;
 		ctx->proc->io.dirty   = true;
-		if(sq.to_submit > 30 || !lazy) {
+		if(sq.to_submit > 30) {
+			__tls_stats()->io.flush.full++;
+			__cfa_io_flush( ctx->proc, 0 );
+		}
+		if(!lazy) {
+			__tls_stats()->io.flush.eager++;
 			__cfa_io_flush( ctx->proc, 0 );
 		}
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 7cf3b1d8c069acc5052d1134b294cb0be126a478)
+++ libcfa/src/concurrency/kernel.cfa	(revision 70b4aeb98c282486fc4418438ec460c81a235669)
@@ -196,4 +196,5 @@
 
 			if( !readyThread ) {
+				__tls_stats()->io.flush.idle++;
 				__cfa_io_flush( this, 0 );
 
@@ -244,4 +245,5 @@
 
 			if(this->io.pending && !this->io.dirty) {
+				__tls_stats()->io.flush.dirty++;
 				__cfa_io_flush( this, 0 );
 			}
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision 7cf3b1d8c069acc5052d1134b294cb0be126a478)
+++ libcfa/src/concurrency/stats.cfa	(revision 70b4aeb98c282486fc4418438ec460c81a235669)
@@ -45,4 +45,8 @@
 			stats->io.submit.slow       = 0;
 			stats->io.flush.external    = 0;
+			stats->io.flush.dirty       = 0;
+			stats->io.flush.full        = 0;
+			stats->io.flush.idle        = 0;
+			stats->io.flush.eager       = 0;
 			stats->io.calls.flush       = 0;
 			stats->io.calls.submitted   = 0;
@@ -107,4 +111,8 @@
 			tally_one( &cltr->io.submit.slow      , &proc->io.submit.slow       );
 			tally_one( &cltr->io.flush.external   , &proc->io.flush.external    );
+			tally_one( &cltr->io.flush.dirty      , &proc->io.flush.dirty       );
+			tally_one( &cltr->io.flush.full       , &proc->io.flush.full        );
+			tally_one( &cltr->io.flush.idle       , &proc->io.flush.idle        );
+			tally_one( &cltr->io.flush.eager      , &proc->io.flush.eager       );
 			tally_one( &cltr->io.calls.flush      , &proc->io.calls.flush       );
 			tally_one( &cltr->io.calls.submitted  , &proc->io.calls.submitted   );
@@ -184,13 +192,14 @@
 				if(io.alloc.fail || io.alloc.revoke || io.alloc.block)
 					sstr | "-     failures      : " | eng3(io.alloc.fail) | "oom, " | eng3(io.alloc.revoke) | "rvk, " | eng3(io.alloc.block) | "blk";
-				if(io.flush.external)
-					sstr | "- flush external    : " | eng3(io.flush.external);
+				// if(io.flush.external)
+				// 	sstr | "- flush external    : " | eng3(io.flush.external);
 
 				double avgsubs = ((double)io.calls.submitted) / io.calls.flush;
 				double avgcomp = ((double)io.calls.completed) / io.calls.drain;
 				sstr | "- syscll : "
-				     |   " sub " | eng3(io.calls.flush) | "/" | eng3(io.calls.submitted) | "(" | ws(3, 3, avgsubs) | "/flush)"
-				     | " - cmp " | eng3(io.calls.drain) | "/" | eng3(io.calls.completed) | "(" | ws(3, 3, avgcomp) | "/drain)"
+				     |   " sub " | eng3(io.calls.submitted) | "/" | eng3(io.calls.flush) | "(" | ws(3, 3, avgsubs) | "/flush)"
+				     | " - cmp " | eng3(io.calls.completed) | "/" | eng3(io.calls.drain) | "(" | ws(3, 3, avgcomp) | "/drain)"
 				     | " - " | eng3(io.calls.errors.busy) | " EBUSY";
+				sstr | " - sub: " | eng3(io.flush.full) | "full, " | eng3(io.flush.dirty) | "drty, " | eng3(io.flush.idle) | "idle, " | eng3(io.flush.eager) | "eagr, " | eng3(io.flush.external) | "ext";
 				sstr | "- ops blk: "
 				     |   " sk rd: " | eng3(io.ops.sockread)  | "epll: " | eng3(io.ops.epllread)
Index: libcfa/src/concurrency/stats.hfa
===================================================================
--- libcfa/src/concurrency/stats.hfa	(revision 7cf3b1d8c069acc5052d1134b294cb0be126a478)
+++ libcfa/src/concurrency/stats.hfa	(revision 70b4aeb98c282486fc4418438ec460c81a235669)
@@ -91,4 +91,8 @@
 			struct {
 				volatile uint64_t external;
+				volatile uint64_t dirty;
+				volatile uint64_t full;
+				volatile uint64_t idle;
+				volatile uint64_t eager;
 			} flush;
 			struct {
