Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision dab09ad17d681d164e04da583cd9bde8fb8e96ff)
+++ libcfa/src/concurrency/io.cfa	(revision cd021085d1b1fd9053f0376b7616c1aaaf7600d8)
@@ -359,12 +359,13 @@
 
 			// We got the lock
+			// Collect the submissions
 			unsigned to_submit = __collect_submitions( ring );
+
+			// Release the lock now so syscalls can overlap
+			unlock(ring.submit_q.lock);
+
+			// Actually submit
 			int ret = __io_uring_enter( ring, to_submit, false );
-			if( ret < 0 ) {
-				unlock(ring.submit_q.lock);
-				return;
-			}
-
-			/* paranoid */ verify( ret > 0 || to_submit == 0 || (ring.ring_flags & IORING_SETUP_SQPOLL) );
+			if( ret < 0 ) return;
 
 			// Release the consumed SQEs
@@ -372,11 +373,9 @@
 
 			// update statistics
-			__STATS__( true,
+			__STATS__( false,
 				io.submit_q.submit_avg.rdy += to_submit;
 				io.submit_q.submit_avg.csm += ret;
 				io.submit_q.submit_avg.cnt += 1;
 			)
-
-			unlock(ring.submit_q.lock);
 		}
 		else {
Index: libcfa/src/parseargs.cfa
===================================================================
--- libcfa/src/parseargs.cfa	(revision dab09ad17d681d164e04da583cd9bde8fb8e96ff)
+++ libcfa/src/parseargs.cfa	(revision cd021085d1b1fd9053f0376b7616c1aaaf7600d8)
@@ -19,4 +19,5 @@
 	extern          long long int strtoll (const char* str, char** endptr, int base);
 	extern unsigned long long int strtoull(const char* str, char** endptr, int base);
+	extern                 double strtod  (const char* str, char** endptr);
 }
 
@@ -170,4 +171,13 @@
 }
 
+bool parse(const char * arg, int & value) {
+	char * end;
+	int r = strtoll(arg, &end, 10);
+	if(*end != '\0') return false;
+
+	value = r;
+	return true;
+}
+
 bool parse(const char * arg, unsigned & value) {
 	char * end;
@@ -200,10 +210,10 @@
 }
 
-bool parse(const char * arg, int & value) {
-	char * end;
-	int r = strtoll(arg, &end, 10);
-	if(*end != '\0') return false;
-
-	value = r;
-	return true;
-}
+bool parse(const char * arg, double & value) {
+	char * end;
+	double r = strtod(arg, &end);
+	if(*end != '\0') return false;
+
+	value = r;
+	return true;
+}
Index: libcfa/src/parseargs.hfa
===================================================================
--- libcfa/src/parseargs.hfa	(revision dab09ad17d681d164e04da583cd9bde8fb8e96ff)
+++ libcfa/src/parseargs.hfa	(revision cd021085d1b1fd9053f0376b7616c1aaaf7600d8)
@@ -39,6 +39,7 @@
 
 bool parse(const char *, const char * & );
+bool parse(const char *, int & );
 bool parse(const char *, unsigned & );
 bool parse(const char *, unsigned long & );
 bool parse(const char *, unsigned long long & );
-bool parse(const char *, int & );
+bool parse(const char *, double & );
