0

重複の可能性:
CPUアフィニティ

Linux(fc12)を実行しているx86マシンで、マルチプロセッサシステムの特定のコアで実行するプロセスを作成できますか?プロセッサの選択に役立つ関数があることは知っていsched_setaffinityますが、プロセッサの特定のコアでプロセスを実行したいと思います。

4

2 に答える 2

1

これが必要かどうかわからないので、このコードを使用して特定のコアでスレッドを実行しました。-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");
}
于 2012-08-30T12:56:28.990 に答える
0

私の知る限り、CPUコアとCPUを区別することはできません。Linuxに関する限り、コアは本格的なCPUです。たとえば、それぞれ 2 つのコアを持つ 2 つの CPU がある場合、Linux は 4 つの CPU があると見なします。

于 2012-08-30T18:42:12.273 に答える