web-dev-qa-db-ja.com

タスクセットを使用してプロセッサの親和性を設定する

Bashスクリプトに次のコードがあります。

echo "bash pid => $$";
echo "processor affinity before => $(taskset -p $$)"
taskset -cp ${AN_INTEGER} $$
echo "processor affinity after => $(taskset -p $$)"

私はこの出力を取得します:

processor affinity before => pid 5047's current affinity mask: ff
pid 5047's current affinity list: 0-7
pid 5047's new affinity list: 1
processor affinity after => pid 5047's current affinity mask: 2

これが何を意味するのか誰か知っていますか?

プロセッサアフィニティをいじり始めた理由は、複数のbash子プロセスを起動し、すべてのbash子プロセスアフィニティの値が「ff」であったため、すべて同じCPUをターゲットにしているように見えたためです。

2
Alexander Mills

taskset マスクを使用して、プロセスを実行できるCPUを指定します。各ビットは1つのCPUにマップされます。ビットが1に設定されている場合、プロセスはそのCPUで実行できますが、0に設定されている場合、実行できません。したがって、FFのマスクは0から7までの任意のCPU(1つの特定のCPUではない)を意味し、2のマスクはCPU1のみを意味します。

3
Stephen Kitt