Index: benchmark/io/http/printer.cfa
===================================================================
--- benchmark/io/http/printer.cfa	(revision 07997cd791b7a0e04d564b2c80dba2c524a0d108)
+++ benchmark/io/http/printer.cfa	(revision 72e76fd79ca74c8a20af8bb1560c3808f736579a)
@@ -6,4 +6,6 @@
 
 void ?{}( sendfile_stats_t & this ) {
+	this.maxfd = 0;
+	this.close = 0;
 	this.calls = 0;
 	this.tries = 0;
@@ -18,12 +20,14 @@
 
 void push(sendfile_stats_t & from, sendfile_stats_t & to) {
-	__atomic_fetch_add(&to.calls, from.calls, __ATOMIC_RELAXED); from.calls = 0;
-	__atomic_fetch_add(&to.tries, from.tries, __ATOMIC_RELAXED); from.tries = 0;
-	__atomic_fetch_add(&to.header, from.header, __ATOMIC_RELAXED); from.header = 0;
-	__atomic_fetch_add(&to.splcin, from.splcin, __ATOMIC_RELAXED); from.splcin = 0;
-	__atomic_fetch_add(&to.splcot, from.splcot, __ATOMIC_RELAXED); from.splcot = 0;
+	to.maxfd = max( to.maxfd, from.maxfd);
+	to.close += from.close; from.close = 0;
+	to.calls += from.calls; from.calls = 0;
+	to.tries += from.tries; from.tries = 0;
+	to.header += from.header; from.header = 0;
+	to.splcin += from.splcin; from.splcin = 0;
+	to.splcot += from.splcot; from.splcot = 0;
 	for(i; zipf_cnts) {
-		__atomic_fetch_add(&to.avgrd[i].calls, from.avgrd[i].calls, __ATOMIC_RELAXED); from.avgrd[i].calls = 0;
-		__atomic_fetch_add(&to.avgrd[i].bytes, from.avgrd[i].bytes, __ATOMIC_RELAXED); from.avgrd[i].bytes = 0;
+		to.avgrd[i].calls += from.avgrd[i].calls; from.avgrd[i].calls = 0;
+		to.avgrd[i].bytes += from.avgrd[i].bytes; from.avgrd[i].bytes = 0;
 	};
 }
@@ -36,7 +40,7 @@
 
 void push(acceptor_stats_t & from, acceptor_stats_t & to) {
-	__atomic_fetch_add(&to.creates, from.creates, __ATOMIC_RELAXED); from.creates = 0;
-	__atomic_fetch_add(&to.accepts, from.accepts, __ATOMIC_RELAXED); from.accepts = 0;
-	__atomic_fetch_add(&to.eagains, from.eagains, __ATOMIC_RELAXED); from.eagains = 0;
+	to.creates += from.creates; from.creates = 0;
+	to.accepts += from.accepts; from.accepts = 0;
+	to.eagains += from.eagains; from.eagains = 0;
 }
 
@@ -53,9 +57,4 @@
 void main(StatsPrinter & this) {
 	LOOP: for() {
-		waitfor( ^?{} : this) {
-			break LOOP;
-		}
-		or else {}
-
 		wait(this.var, 10`s);
 
@@ -79,12 +78,15 @@
 
 			double ratio = ((double)tries) / calls;
+			uint64_t accp_open = this.stats.accpt.accepts;
+			uint64_t accp_clse = this.stats.send.close;
+			uint64_t accp_live = accp_open - accp_clse;
 
-			if(this.stats.accpt.accepts > 0) {
-				sout | "----- Acceptor Stats -----";
-				sout | "accept  : " | eng3(this.stats.accpt.accepts) | "calls," | eng3(this.stats.accpt.eagains) | "eagains," | eng3(this.stats.accpt.creates) | " thrds";
-				sout | nl;
-			}
+			sout | "----- Acceptor Stats -----";
+			sout | "accepts : " | eng3(accp_open) |"opened," | eng3(accp_clse) |"closed," | eng3(accp_live) |"live";
+			sout | "accept  : " | eng3(this.stats.accpt.accepts) | "calls," | eng3(this.stats.accpt.eagains) | "eagains," | eng3(this.stats.accpt.creates) | " thrds";
+			sout | nl;
 
 			sout | "----- Connection Stats -----";
+			sout | "max fd    : " | this.stats.send.maxfd;
 			sout | "sendfile  : " | eng3(calls) | "calls," | eng3(tries) | "tries (" | ratio | " try/call)";
 			sout | "            " | eng3(header) | "header," | eng3(splcin) | "splice in," | eng3(splcot) | "splice out";
@@ -95,4 +97,9 @@
 			}
 		}
+
+		waitfor( ^?{} : this) {
+			break LOOP;
+		}
+		or else {}
 	}
 }
Index: benchmark/io/http/printer.hfa
===================================================================
--- benchmark/io/http/printer.hfa	(revision 07997cd791b7a0e04d564b2c80dba2c524a0d108)
+++ benchmark/io/http/printer.hfa	(revision 72e76fd79ca74c8a20af8bb1560c3808f736579a)
@@ -10,4 +10,6 @@
 
 struct sendfile_stats_t {
+	volatile uint64_t maxfd;
+	volatile uint64_t close;
 	volatile uint64_t calls;
 	volatile uint64_t tries;
