require 'rubygems'
require 'inline'
class LinuxScheduler
inline do |builder|
builder.include '<sched.h>'
builder.include '<stdio.h>'
builder.c '
int _set_affinity(int cpu_id) {
cpu_set_t mask;
__CPU_ZERO(&mask);
__CPU_SET(cpu_id, &mask);
if(sched_setaffinity(getpid(), sizeof(mask), &mask ) == -1) {
printf("WARNING: Could not set CPU Affinity, continuing as-is\n");
return 0;
}
return 1;
}
'
end
def self.set_affinity(cpu_id)
self.new._set_affinity(cpu_id.to_i)
end
end
LinuxScheduler.set_affinity(ARGV.first)
1000000.times { b = rand(100) ** 100 }