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