19.5. 使用 taskset 工具将进程绑定到 CPU
taskset
实用程序使用任务的进程 ID (PID)来查看或设置其 CPU 关联性。您可以使用 实用程序运行带有所选 CPU 关联性的命令。
要设置关联性,您需要将 CPU 掩码设为十进制或十六进制数字。mask 参数是一个 位掩码
,用于指定修改的命令或 PID 的 CPU 内核是法律的。
taskset
工具在 NUMA (Non-Uniform Memory Access)系统上工作,但它不允许用户将线程绑定到 CPU 和最接近的 NUMA 内存节点。在这样的系统上,taskset 不是首选工具,而 numactl
实用程序则应用于其高级功能。
如需更多信息,请参阅您系统上的 numactl (8)
手册页。
流程
使用必要的选项和参数运行
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 -c 0,4,7-11 /usr/local/bin/my_embedded_process
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在大多数情况下,此调用更为方便。
要设置当前没有运行的进程的关联性,请使用
taskset
并指定 CPU 掩码和进程。在本例中,会指示
my_embedded_process
仅使用 CPU 3 (使用 CPU 掩码的十进制版本)。taskset 8 /usr/local/bin/my_embedded_process
# taskset 8 /usr/local/bin/my_embedded_process
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在位掩码中指定多个 CPU。在本例中,将指示
my_embedded_process
在处理器 4、5、6 和 7 (使用 CPU 掩码的十六进制版本)上执行。taskset 0xF0 /usr/local/bin/my_embedded_process
# taskset 0xF0 /usr/local/bin/my_embedded_process
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用 CPU 掩码和您要更改的进程的 PID 选项为已经运行的进程设置 CPU 关联性。
在本例中,PID 为 7013 的进程被指示仅在 CPU 0 上运行。
taskset -p 1 7013
# taskset -p 1 7013
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以组合列出的选项。