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