Linux – Processor Affinity on Linux

linuxmulticoremultithreading

Thanks for all the answers so far!

I am having a Dual Core processers and I would like to have all the processes running
on core1 but one. I know now that I can use taskset to set all currently running to
be bound to processor 1 for example. Now I would like that my OWN application is scheduled
for execution on processor 2 instantly after launching the application. In other words,
is there some way to tell the OS in my application that I would like to have this particular program to be executed on processor number 2?

Thank you so much,
Mareika

Best Answer

Take a look at this article:

http://www.linuxjournal.com/article/6799

Which covers the subject in detail.

In short, make sure 'init' is getting started with affinity for one proc (it's children will inherit), then you'll want to use:

// (Declaration got via 'man sched_setaffinity')
int sched_setaffinity(pid_t pid, size_t cpusetsize,
                         cpu_set_t *mask);

To set your process affinity just after your program starts up.