文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。
笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888
通过 taskset 命令可将某个进程与某个 CPU 核心绑定,使得其仅在与之绑定的 CPU 核心上运行。线程是最小的内核执行调度单元,因此,准确地说是将某个线程与某个 CPU 核心绑定,而非某个进程。taskset 是依据线程 PID(TID)查询或设置线程的 CPU 亲和性(与哪个 CPU 核心绑定)。
taskset 指令介绍:
>> taskset --help Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]] Show or change the CPU affinity of a process. Options: -a, --all-tasks operate on all the tasks (threads) for a given pid -p, --pid operate on existing given pid -c, --cpu-list display and specify cpus in list format -h, --help display this help -V, --version display version The default behavior is to run a new command: taskset 03 sshd -b 1024 You can retrieve the mask of an existing task: taskset -p 700 Or set it: taskset -p 03 700 List format uses a comma-separated list instead of a mask: taskset -pc 0,3,7-11 700 Ranges in list format can take a stride argument: e.g. 0-31:2 is equivalent to mask 0x55555555 For more details see taskset(1).
查询 PID(TID)= 11498 的进程可用的CPU核心
>> taskset -pc 11498 >> # 默认情况下,TID=11498的线程可以运行在任意的CPU核心上(0-3) >> pid 11498's current affinity list: 0-3
查询 PID(TID)= 11498 的进程可用的CPU核心,掩码形式表示
>> # 0x0F(十六进制) => 1111(二进制),最右起第一个1表示CPU核心#0,第二个1表示CPU核心#1 … >> taskset -p 11498 >> pid 11498's current affinity mask: f
设置 PID(TID)= 11498 的进程可用的CPU核心到#0、#2上
>> taskset -pc 0,2 11498 >> pid 11498's current affinity list: 2 >> pid 11498's new affinity list: 0,2
设置 PID(TID)= 11498 的进程可用的CPU核心到除#0之外的核心上,掩码形式表示
>> # 原来的是0、2,即0101(掩码十进制5),现在的是0111,即掩码十进制7。 >> taskset -p 7 11498 >> pid 11498's current affinity mask: 5 >> pid 11498's new affinity mask: 7