Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Processor Affinity on Linux

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

like image 475
Mareika Avatar asked Feb 28 '23 17:02

Mareika


2 Answers

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.

like image 95
Aaron H. Avatar answered Mar 07 '23 18:03

Aaron H.


You can use:

taskset -c 1 -p 123

to let run process 123 on core 2.

like image 22
tur1ng Avatar answered Mar 07 '23 18:03

tur1ng