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