特定のマシンの特定のコアでのみ実行できるようにLinuxプロセスを制限することは可能ですか?


10

クアッドコアボックスと4つの同一のプロセスがあり、それぞれに10スレッドがあるとします。Linuxでは、プロセスAはCPU 0でのみ実行が許可され、プロセスBはCPU 1でのみ実行が許可されると言うことは可能ですか?

回答:


16
taskset <affinity mask> -p <process>

すなわち

taskset 1 -p 12345

プロセッサ/コア1のみを使用するようにプロセス12345を設定するには

ビットマスクは、リスト(つまり、4 +コアシステムのコア1 3および4を使用する場合は1,3,4)または16進数のビットマスク(0x0000000Dはコア1のみの場合は1,3,4、0x00000001)です。

taskset通常はというパッケージにありますshedutils

編集:ほとんど忘れてしまいました...既存のプロセスに変更するのではなく、新しいコマンドのアフィニティを設定する場合は、次のコマンドを使用します。

taskset <mask> <program> [<arg1>]...[<argN>]

1

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と同等です

常に必要に応じてサーバーを最適化できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.