クアッドコアボックスと4つの同一のプロセスがあり、それぞれに10個のスレッドがあります。 Linuxでは、プロセスAはCPU 0でのみ実行が許可され、プロセスBはCPU 1でのみ実行が許可されると言うことは可能ですか?
taskset <affinity mask> -p <process>
つまり.
taskset 1 -p 12345
プロセス12345がプロセッサ/コア1のみを使用するように設定するには
ビットマスクは、リスト(つまり、4 +コアシステムのコア1 3および4を使用する場合は1,3,4)または16進数のビットマスク(コア1のみの場合は0x0000000D 1,3,4、0x00000001)にすることができます。
taskset
は通常、shedutils
というパッケージに含まれています。
編集:ほとんど忘れてしまいました...既存のプロセスのコマンドを変更するのではなく、新しいコマンドのアフィニティを設定する場合は、次のコマンドを使用します。
taskset <mask> <program> [<arg1>]...[<argN>]
taskset(util-linux 2.13-pre7)の使用法:taskset [オプション] [マスク| cpu-list] [pid | cmd [args ...]]プロセスのアフィニティを設定または取得します
-p、-pidは既存の指定されたpidを操作します-c、-cpu-list表示およびcpusをリスト形式で指定します-h、-helpこのヘルプを表示します-v、-version出力バージョン情報
デフォルトの動作は、新しいコマンドを実行することです:taskset 03 sshd -b 1024既存のタスクのマスクを取得できます:taskset -p 700または設定:taskset -p 03 700リスト形式では、コンマ区切りのリストを使用しますマスク:taskset -pc 0,3,7-11 700リスト形式の範囲はストライド引数を取ることができます:例0-31:2はマスク0x55555555と同等
常に必要に応じてサーバーを最適化できます