0

「&」を使用してバックグラウンドプロセスを作成せずに、複数のシェルコマンドを並行して実行しようとしています。また、1 つのジョブを 1 つの CPU に (公平に) 割り当てたいと考えています。

CPU #1: cmd1

CPU #2: cmd2

CPU #3: cmd3

CPU #4: cmd4

その方法を教えてください。

「並列」コマンドを見つけましたが、使い方がわかりませんでした。また、次のコマンドを試しました。./cmd2 | ./cmd3 | ./cmd4 4 つのコマンド (cmd1 から cmd4) が並行して実行されているように見えますが、上で述べたようにジョブがコアに割り当てられているかどうかはわかりません。

ありがとうございました!

ごめん。Linuxでコマンドを実行しています。

4

1 に答える 1

3

まず、プロセスを並行して実行する場合は、バックグラウンド ジョブにする必要があります。の使用に反対する理由は何&ですか?

taskset次に、プロセスを CPU コアまたはコアのセットにバインドするために使用できます。例えば:

taskset -c 0 cmd1 &
taskset -c 1 cmd2 &
taskset -c 2 cmd3 &
taskset -c 3 cmd4 &

ただし、これは良い考えではないかもしれません。1 つのプロセスが長時間アイドル状態の場合、他の 3 つのプロセスは割り当てられているコアを使用できません。

于 2013-07-07T08:52:19.913 に答える