setting processor affinity with C++ that will run on Linux
12,183
From the command line you can use taskset(1), or from within your code you can use sched_setaffinity(2).
E.g.
#ifdef __linux__ // Linux only
#include <sched.h> // sched_setaffinity
#endif
int main(int argc, char *argv[])
{
#ifdef __linux__
int cpuAffinity = argc > 1 ? atoi(argv[1]) : -1;
if (cpuAffinity > -1)
{
cpu_set_t mask;
int status;
CPU_ZERO(&mask);
CPU_SET(cpuAffinity, &mask);
status = sched_setaffinity(0, sizeof(mask), &mask);
if (status != 0)
{
perror("sched_setaffinity");
}
}
#endif
// ... your program ...
}
Author by
Ifeanyi
Updated on June 05, 2022Comments
-
Ifeanyi about 2 years
Possible Duplicate:
CPU AffinityI'm running on Linux and I want to write a C++ program that will set 2 specific processors that my 2 applications that will run in parallel (i.e. setting each process to run on a different core/CPU). I want to use processor affinity tool with C++. Please can anyone help with C++ code.
-
Ifeanyi over 12 yearsThanks Paul, I want to auto run with C++ instead of going through command line. I am not too sure of how to use int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask); int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask); please do you have run C++ code, that I can test with?
-
Ifeanyi over 12 yearsThanks so much Paul, this is what I am looking for.