12.5. 使用 taskset 工具将进程绑定到 CPU
taskset
实用程序使用任务的进程 ID(PID)来查看或设置其 CPU 关联性。您可以使用 实用程序启动具有所选 CPU 关联性的命令。
要设置关联性,您需要获取 CPU 掩码为十进制或十六进制数字。mask 参数是一个位掩码,用于指定哪些 CPU 内核是被修改的命令或 PID 的法律。
taskset 实用程序可用于 NUMA(Non-Uniform Memory Access)系统,但它不允许用户将线程绑定到 CPU 和最接近的 NUMA 内存节点。在这样的系统中,Tasket 不是首选工具,而 numactl
实用程序则应该用于其高级功能。
如需更多信息,请参阅 numactl(8)
man page。
流程
使用必要的选项和参数运行
taskset
。您可以使用 -c 参数而不是 CPU 掩码指定 CPU 列表。在本例中,
my_embedded_process
会被指示在 CPU 0,4,7-11 上运行。~]# taskset -c 0,4,7-11 /usr/local/bin/my_embedded_process
在大多数情况下,这个调用更为方便。
要设置当前运行的进程的关联性,请使用
taskset
并指定 CPU 掩码和进程。在本例中,指示
my_embedded_process
只使用 CPU 3(使用 CPU 掩码的十进制版本)。~]# taskset 8 /usr/local/bin/my_embedded_process
您可以在 bitmask 中指定多个 CPU。在本例中,
my_embeed_process
会被指示在处理器 4、5、6 和 7 上执行(使用 CPU 掩码的十六进制版本)。~]# taskset 0xF0 /usr/local/bin/my_embedded_process
您可以为已经运行的进程设置 CPU 关联性,以将
-p
(--pid
)选项用于 CPU 掩码,以及您要更改的进程的 PID。在本例中,指示 PID 为 7013 的进程仅在 CPU 0 上运行。~]# taskset -p 1 7013
您可以组合列出的选项。
其他资源
-
taskset(1)
man page -
numactl(8)
man page