異なるプロセスに異なる CPU コアを割り当てるにはどうすればよいですか?

異なるプロセスに異なる CPU コアを割り当てるにはどうすればよいですか?

私は Ubuntu Server Edition 11.10 を使用しており、同じコアで 2 つの CPU を集中的に使用するプログラムを実行しています。これらのプロセスはどちらもマルチコア処理用にプログラムされていません。プロセス A をコア 1 で実行し、プロセス B をコア 2 で実行するように指示する方法はありますか?

答え1

受け入れられた回答は良いアドバイスかもしれませんが、あなたの質問に対する回答ではありません。あなたの質問は、あなたが回答を聞く資格がないことを示すものではありません。実際、どのプロセッサが何をすべきかを具体的に示したい状況の良い例のように思えます。

要するに、必要なのは CPU セットです。Ubuntu 11.10 では最新の Linux カーネルを使用しているため、CPU セットがサポートされています。Linux 2.6 が必要だと思います。

cpuset のマニュアルページはここで読むことができます:http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html

一般的な読み物用の別のページは次のとおりです。http://www.bullopensource.org/cpuset/

Linux は CPU 時間をどのように割り当てるかを決定するのに「優れている」かもしれませんが、完璧ではありません。

答え2

失礼に聞こえなければいいのですが、この質問をするなら、考える必要すらありません。これは Linux が自分で解決するのが得意なことの 1 つです。これを実行すると、パフォーマンスに非常に悪い影響が出る可能性があります。プログラムがより多くのプロセッサを使用するように設計されていない場合でも、Linux は必要に応じてプロセッサを別のコアに移動します。プログラムはそれに気づきません。

nice両方に低い値を指定して、niceコマンドでより高い優先度を設定することもできます。

関連情報