【嵌入式开发 Linux 常用命令系列 11 -- linux 下 任务与CPU绑定命令 taskset 详细介绍 】

文章目录

    • taskset 介绍
    • 如何获取当前cpu执行的任务有哪些?

上篇文章:嵌入式开发 Linux 常用命令系列 10 – linux 必用 跟踪系统调用和信号 命令 strace 详细介绍

taskset 介绍

taskset命令是Linux下用于设置或获取进程的CPU亲和性的工具。所谓CPU亲和性是指将进程绑定到某一个或某几个CPU上执行,提高系统的性能。taskset命令允许你设置或检索给定进程的CPU亲和性。

基本使用方法如下:

taskset [选项] mask command [arg]... taskset [选项] -p [mask] pid

常用选项包括:

  • -p : 操作已存在的进程的CPU亲和性,而不是启动新进程。
  • -c : 将CPU列表以逗号分隔的列表格式指定,而不是掩码。例如,0,1表示进程只能在第一和第二个CPU上运行。

"mask"是一个以十六进制形式表示的bit mask,使用CPU的序号表示。例如,01表示只在第一个CPU上运行,03表示可以在前两个CPU上运行。

一个基本的taskset使用示例:

taskset -c 0,1 command

这会将命令"command"的执行限制在第一和第二个CPU上。

另一个示例,获取一个已存在进程的CPU亲和性:

taskset -p pid

这会显示进程pid的CPU亲和性。

使用taskset命令时,你需要有适当的权限,通常这意味着需要root权限。

如何获取当前cpu执行的任务有哪些?

可以使用taskset命令配合ps命令来查看特定CPU上正在运行的任务。

首先,我们可以使用taskset命令来查看每个进程的CPU亲和性。这可以通过指定-p选项和进程ID来实现。例如:

taskset -p [pid]

上面的命令会显示给定PID进程的CPU亲和性。

然后,你可以使用ps命令来查看所有正在运行的进程和它们的PID。例如:

ps -A

上面的命令会显示系统上所有正在运行的进程。

然后,你可以组合使用这两个命令来查看在特定CPU上运行的所有进程。例如,以下的脚本将会显示在CPU 0上运行的所有进程:

for pid in $(ps -A -o pid); do taskset -p $pid | grep -q "0,1" if [ $? -eq 0 ]; then echo $pid fi done

这段脚本首先会获取所有进程的PID,然后会使用taskset命令查询这些PID的CPU亲和性。如果一个进程的CPU亲和性包含CPU 0,那么这个脚本就会输出这个进程的PID。

更详细的使用见

taskset -h
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).

上篇文章:嵌入式开发 Linux 常用命令系列 10 – linux 必用 跟踪系统调用和信号 命令 strace 详细介绍

你可能感兴趣的:(#,Linux,常用命令,taskset,cpu,任务绑定)