2010-12-14 9 views
0

マルチコアマシン上の特定のコアにスレッドを手動で割り当てる方法を検討したいと考えました。私はinclude/sched.hがこれを助けるいくつかのマクロと関数(sched_setaffinityなど)を定義していることがわかりました。しかし、関数はexternされており、定義を見つけることができません。これらの機能はどこに実装されていますか?はいの場合は、デフォルトの実装をどこでオーバーライドできますか?いいえ、どうすれば実装できますか?include/sched.h関数を実装しています

新しい実装を追加すると、自分のLinuxカーネルを再コンパイルする必要がありますか?

+0

おそらく重複:http://stackoverflow.com/questions/766395/how-does-sched-setaffinity-work - 実装はhttp://lxr.linux.no/linux+v2.6.36/kernel/です。 sched.c#L4858 – jweyrich

+0

sched_setaffinity() - その呼び出しを調べると、スレッド化にも使用されます。 –

答えて

0

BFSのコードで、独自のCPUスケジューラの実装方法を確認してください。

// edit ye​​s新しいスケジューラを追加するということは、カーネルを再コンパイルする必要があることを意味しますが、qemu -kernel /path/to/new/kerenl -initrd somethingでテストして、実際のマシンでコードをテストする前にすぐにクラッシュしないようにすることができます。

+0

qemuでテストするのは、新しいコードがクラッシュしたかどうかだけです。ホストシステムスケジューラは、タイミング測定を妨害します。実際のマシンで試していない限り、適切なパフォーマンスメトリックを得ることはできません。 – thkala

+0

合意した、私は彼のコードがクラッシュしないかどうかテストすることを意味しました。 – OneOfOne

0

sched_setaffinityのコードはカーネル内にあります。ヘッダーファイルは呼び出すためのプロトタイプを提供するだけであり、それを満たすライブラリは呼び出しをシステムに転送するだけです。

関連する問題