「taskset(1)」-

设置或检索进程的CPU亲和性

命令语法格式

taskset [options] mask command [argument…]

taskset [options] -p [mask] pid

命令描述

命令taskset用于在给定pid的情况下设置或检索正在运行的进程的CPU亲和性,或者用于启动具有给定CPU亲和性的新命令。 CPU亲和性是一种调度程序属性,它将进程“绑定”到系统上的给定CPU集。 Linux调度程序将遵循给定的CPU亲和性,并且该进程不会在任何其他CPU上运行。请注意,Linux调度程序还支持自然CPU亲和性:由于性能原因,调度程序会尝试将进程保留在同一CPU上。因此,强制特定的CPU亲和性仅在某些应用程序中有用。

CPU亲和性表示为位掩码,最低位对应于第一逻辑CPU,最高位对应于最后一个逻辑CPU。并非所有CPU都可能存在于给定系统上,但掩码可能指定的CPU数量多于现有CPU数量。检索到的掩码将仅反映与系统上物理上的CPU相对应的位。如果给出了无效掩码(即,对应于当前系统上没有有效CPU的掩码),则返回错误。掩码可以用十六进制指定(带或不带前导“0x”),或带有–cpu-list选项的CPU列表。例如:

0x00000001,处理器#0,

0x00000003,处理器#0和#1,

0xFFFFFFFF,处理器#0~#31,

32,处理器#0、#4、#5,

–cpu-list 0-2,6,处理器#0、#1、#2、#6

当taskset返回时,保证给定的程序已被安排到合法的CPU。

命令支持的选项及含义

-a, –all-tasks
设置或检索给定PID的所有任务(线程)的CPU亲和性。

-c, –cpu-list
将mask解释为处理器的数字列表,而不是位掩码。 数字以逗号分隔,可能包括范围。 例如:0,5,8-11。

-p, –pid
在现有PID上运行,不要启动新任务。

-h, –help
显示帮助信息。

-V, –version
显示版本信息。

注意事项

权限

用户可以更改属于同一用户的进程的CPU亲和性。 用户必须拥有CAP_SYS_NICE才能更改属于另一个用户的进程的CPU亲和性。 用户可以检索任何进程的关联掩码。

使用示例

默认行为是使用给定的关联掩码运行新命令:

# taskset mask command [arguments]

您还可以检索现有任务的CPU亲和性:

# taskset -p pid

或者设置:

# taskset -p mask pid

如上示例。

相关手册

chrt(1), nice(1), renice(1), sched_getaffinity(2), sched_setaffinity(2)

See sched(7) for a description of the Linux scheduling scheme.

参考文献

  • man 1 taskset, Version 2.32.1-0.1

更新日志

  • 10/12/2018 创建文章