重複の可能性:
CPUアフィニティ
Linux(fc12)を実行しているx86マシンで、マルチプロセッサシステムの特定のコアで実行するプロセスを作成できますか?プロセッサの選択に役立つ関数があることは知っていsched_setaffinity
ますが、プロセッサの特定のコアでプロセスを実行したいと思います。
重複の可能性:
CPUアフィニティ
Linux(fc12)を実行しているx86マシンで、マルチプロセッサシステムの特定のコアで実行するプロセスを作成できますか?プロセッサの選択に役立つ関数があることは知っていsched_setaffinity
ますが、プロセッサの特定のコアでプロセスを実行したいと思います。
これが必要かどうかわからないので、このコードを使用して特定のコアでスレッドを実行しました。-pthread を使用してコンパイルおよびリンクします。
#include "pthread.h"
#include "sched.h"
int affinity = 3; //core id
pthread_t mythread;
mythread = pthread_self();
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(affinity, &cpuset); //lets kernel know only core affinity may run this thread
if (pthread_setaffinity_np(mythread, sizeof(cpu_set_t), &cpuset) <0){
perror("sched_set_affinity");
}
私の知る限り、CPUコアとCPUを区別することはできません。Linuxに関する限り、コアは本格的なCPUです。たとえば、それぞれ 2 つのコアを持つ 2 つの CPU がある場合、Linux は 4 つの CPU があると見なします。