使用任务集设置处理器关联

Ale*_*lls 3 linux cpu scheduling taskset

我在 bash 脚本中有以下代码:

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

我得到这个输出:

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
Run Code Online (Sandbox Code Playgroud)

有谁知道这是什么意思?

我开始搞乱处理器关联的原因是因为我将启动多个 bash 子进程,并且所有 bash 子进程关联的值都为“ff”,因此它们似乎都针对同一个 CPU。

Ste*_*itt 5

taskset使用掩码来指定进程可以在哪些 CPU 上运行。每个位映射到一个 CPU;如果某个位设置为 1,则该进程可以在该 CPU 上运行,如果设置为 0,则不能。因此,掩码 FF 表示从 0 到 7 的任何 CPU(不是一个特定的 CPU),掩码 2 表示仅 CPU 1。