Index: benchmark/io/readv.cfa
===================================================================
--- benchmark/io/readv.cfa	(revision 8e27ac450dcd2107832246b097264ec232c1b64f)
+++ benchmark/io/readv.cfa	(revision 566fde0b28f01b803e3c2de9c36338aaa80bdeff)
@@ -16,4 +16,5 @@
 #include <thread.hfa>
 #include <time.hfa>
+#include <stats.hfa>
 
 #include "../benchcltr.hfa"
@@ -52,4 +53,6 @@
 	unsigned long int nthreads = 2;
 	unsigned long int nprocs   = 1;
+	bool silent = false;
+	bool procstats = false;
 	unsigned flags = 0;
 	unsigned sublen = 16;
@@ -61,4 +64,6 @@
 			{"nthreads",     required_argument, 0, 't'},
 			{"nprocs",       required_argument, 0, 'p'},
+			{"nostats",      no_argument      , 0, 'S'},
+			{"procstat",     no_argument      , 0, 'P'},
 			{"bufsize",      required_argument, 0, 'b'},
 			{"userthread",   no_argument      , 0, 'u'},
@@ -69,5 +74,5 @@
 
 		int idx = 0;
-		int opt = getopt_long(argc, argv, "d:t:p:b:usl:", options, &idx);
+		int opt = getopt_long(argc, argv, "d:t:p:SPb:usl:", options, &idx);
 
 		const char * arg = optarg ? optarg : "";
@@ -99,4 +104,10 @@
 				}
 				break;
+			case 'S':
+				silent = true;
+				break;
+			case 'P':
+				procstats = true;
+				break;
 			case 'b':
 				buflen = strtoul(arg, &end, 10);
@@ -124,12 +135,14 @@
 				fprintf(stderr, "%d\n", opt);
 			usage:
-				fprintf(stderr, "Usage: %s : [options]\n", argv[0]);
-				fprintf(stderr, "\n");
-				fprintf(stderr, "  -d, --duration=DURATION  Duration of the experiment, in seconds\n");
-				fprintf(stderr, "  -t, --nthreads=NTHREADS  Number of user threads\n");
-				fprintf(stderr, "  -p, --nprocs=NPROCS      Number of kernel threads\n");
-				fprintf(stderr, "  -b, --buflen=SIZE        Number of bytes to read per request\n");
-				fprintf(stderr, "  -u, --userthread         If set, cluster uses user-thread to poll I/O\n");
-				fprintf(stderr, "  -s, --submitthread       If set, cluster uses polling thread to submit I/O\n");
+				fprintf( stderr, "Usage: %s : [options]\n", argv[0] );
+				fprintf( stderr, "\n" );
+				fprintf( stderr, "  -d, --duration=DURATION  Duration of the experiment, in seconds\n" );
+				fprintf( stderr, "  -t, --nthreads=NTHREADS  Number of user threads\n" );
+				fprintf( stderr, "  -p, --nprocs=NPROCS      Number of kernel threads\n" );
+				fprintf( stderr, "  -S, --nostats            Don't print cluster stats\n" );
+				fprintf( stderr, "  -P, --procstat           Print processor stats" );
+				fprintf( stderr, "  -b, --buflen=SIZE        Number of bytes to read per request\n" );
+				fprintf( stderr, "  -u, --userthread         If set, cluster uses user-thread to poll I/O\n" );
+				fprintf( stderr, "  -s, --submitthread       If set, cluster uses polling thread to submit I/O\n" );
 				exit(EXIT_FAILURE);
 		}
@@ -148,8 +161,17 @@
 		BenchCluster cl = { flags };
 		#if !defined(__CFA_NO_STATISTICS__)
-			print_stats_at_exit( cl.self );
+			if( !silent ) {
+				print_stats_at_exit( cl.self, CFA_STATS_READY_Q | CFA_STATS_IO );
+			}
 		#endif
 		{
 			BenchProc procs[nprocs];
+			#if !defined(__CFA_NO_STATISTICS__)
+				if( procstats ) {
+					for(i; nprocs) {
+						print_stats_at_exit( procs[i].self, CFA_STATS_READY_Q | CFA_STATS_IO );
+					}
+				}
+			#endif
 			{
 				Reader threads[nthreads];
Index: benchmark/readyQ/yield.cfa
===================================================================
--- benchmark/readyQ/yield.cfa	(revision 8e27ac450dcd2107832246b097264ec232c1b64f)
+++ benchmark/readyQ/yield.cfa	(revision 566fde0b28f01b803e3c2de9c36338aaa80bdeff)
@@ -13,4 +13,5 @@
 #include <clock.hfa>
 #include <time.hfa>
+#include <stats.hfa>
 
 #include "../benchcltr.hfa"
@@ -45,6 +46,6 @@
 	int nprocs = 1;
 	int nthreads = 1;
-
-
+	bool silent = false;
+	bool procstats = false;
 
 	for(;;) {
@@ -53,9 +54,11 @@
 			{"nprocs",    required_argument, 0, 'p'},
 			{"nthreads",  required_argument, 0, 't'},
+			{"nostats",   no_argument      , 0, 'S'},
+			{"procstat",  no_argument      , 0, 'P'},
 			{0, 0, 0, 0}
 		};
 
 		int idx = 0;
-		int opt = getopt_long(argc, argv, "d:p:t:", options, &idx);
+		int opt = getopt_long(argc, argv, "d:p:t:SP", options, &idx);
 
 		char * arg = optarg ? optarg : "";
@@ -87,4 +90,10 @@
 				}
 				break;
+			case 'S':
+				silent = true;
+				break;
+			case 'P':
+				procstats = true;
+				break;
 			// Other cases
 			default: /* ? */
@@ -96,4 +105,6 @@
 				fprintf( stderr, "  -t, --nthreads=NTHREADS  Number of kernel threads\n" );
 				fprintf( stderr, "  -q, --nqueues=NQUEUES    Number of queues per threads\n" );
+				fprintf( stderr, "  -S, --nostats            Don't print cluster stats\n" );
+				fprintf( stderr, "  -P, --procstat           Print processor stats" );
 				exit(1);
 		}
@@ -107,11 +118,15 @@
 		BenchCluster cl = { 0 };
 		#if !defined(__CFA_NO_STATISTICS__)
-			print_stats_at_exit( cl.self );
+			if( !silent ) {
+				print_stats_at_exit( cl.self, CFA_STATS_READY_Q );
+			}
 		#endif
 		{
 			BenchProc procs[nprocs];
 			#if !defined(__CFA_NO_STATISTICS__)
-				for(i; nprocs) {
-					print_stats_at_exit( procs[i].self );
+				if( procstats ) {
+					for(i; nprocs) {
+						print_stats_at_exit( procs[i].self, CFA_STATS_READY_Q );
+					}
 				}
 			#endif
