答えを再確認するために、この質問をする必要があります。
コマンドの順序は重要ですか? 例えば:
このコマンドですか
taskset 0x2 time echo "foo"
等しい
time taskset 0x2 echo "foo"
?
タスクセットに続くすべてのコマンドが同じ CPU アフィニティを持つのか、それともその直後のコマンドだけを持つのかを知る必要があります。
答えを再確認するために、この質問をする必要があります。
コマンドの順序は重要ですか? 例えば:
このコマンドですか
taskset 0x2 time echo "foo"
等しい
time taskset 0x2 echo "foo"
?
タスクセットに続くすべてのコマンドが同じ CPU アフィニティを持つのか、それともその直後のコマンドだけを持つのかを知る必要があります。
ここで2つの異なる質問をしているようです-「それらは同等ですか?」および「CPU アフィニティは継承されますか?」。
まず、リストした 2 つのコマンドは同等ではありません。最初:
taskset 0x2 time echo "foo"
PATH
私が現在使用しているホストと同様のセットアップを想定すると、次のようになります。
/bin/taskset 0x2 /usr/bin/time /bin/echo "foo"
次のようなプロセス ツリーが生成されます。
/bin/taskset
|
\- /usr/bin/time
|
\- /bin/echo
二番目:
time taskset 0x2 echo "foo"
これはbuiltin/bin/taskset 0x2 /bin/echo "foo"
によってラップされたものと同等であり、次のプロセス ツリーを生成します。bash
time
/bin/taskset
|
\- /bin/echo
この場合、外部プロセスは 2 つしかありません。time
パーツはbash
を呼び出す代わりに、内部で処理され/usr/bin/time
ます。
2 番目の質問に答えるために、Linux では CPU アフィニティが継承されるため、最初の例では と の両方/usr/bin/time
を/bin/echo
指定された CPU セットにバインドします。2 番目の例でtime
は、 はシェルに組み込まれているため、現在のコマンド ラインではbash
なく、自身に設定された CPU アフィニティの影響を受けます。taskset