设置或检索进程的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列表。例如:
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亲和性。 用户可以检索任何进程的关联掩码。
使用示例
默认行为是使用给定的关联掩码运行新命令:
您还可以检索现有任务的CPU亲和性:
或者设置:
如上示例。
相关手册
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 创建文章