Index: benchmark/io/http/main.cfa
===================================================================
--- benchmark/io/http/main.cfa	(revision 753fb9784c694cd9fc5f0a571f03237cf5351f17)
+++ benchmark/io/http/main.cfa	(revision 6117fc0051b10a52c4535d4b22f4ee86962207c6)
@@ -6,4 +6,5 @@
 #include <unistd.h>
 extern "C" {
+	#include <sched.h>
 	#include <signal.h>
 	#include <sys/socket.h>
@@ -67,7 +68,28 @@
 	(this.self){ "Server Cluster", options.clopts.params };
 
+	cpu_set_t fullset;
+	CPU_ZERO(&fullset);
+	int ret = sched_getaffinity(getpid(), sizeof(fullset), &fullset);
+	if( ret != 0 ) abort | "sched_getaffinity failed with" | errno | strerror( errno );
+	int cnt = CPU_COUNT(&fullset);
+
 	this.procs = alloc(options.clopts.nprocs);
 	for(i; options.clopts.nprocs) {
 		(this.procs[i]){ "Benchmark Processor", this.self };
+
+		int c = 0;
+		int n = 1 + (i % cnt);
+		for(int j = 0; j < CPU_SETSIZE; j++) {
+			if(CPU_ISSET(j, &fullset)) n--;
+			if(n == 0) {
+				c = j;
+				break;
+			}
+		}
+		cpu_set_t localset;
+		CPU_ZERO(&localset);
+		CPU_SET(c, &localset);
+		ret = pthread_setaffinity_np(this.procs[i].kernel_thread, sizeof(localset), &localset);
+		if( ret != 0 ) abort | "sched_getaffinity failed with" | ret | strerror( ret );
 
 		#if !defined(__CFA_NO_STATISTICS__)
