Just hacked up a snippet of code to stop a thread migrating to a different CPU while it runs. This should help the thread get, and keep, local memory. This in turn should reduce run-to-run variance.
#include <sys/processor.h> void bindnow() { processorid_t proc = getcpuid(); if (processor_bind(P_LWPID, P_MYID, proc, 0)) { printf("Warning: Binding failed\n"); } else { printf("Bound to CPU %i\n", proc); } }