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


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

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 常用命令系列 12 – linux 下 log 输出重定向 详细介绍

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值