首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >命令的交换性质

命令的交换性质
EN

Stack Overflow用户
提问于 2015-06-11 09:07:23
回答 2查看 212关注 0票数 2

我需要问这个问题,只是为了复核答案。

命令的顺序重要吗?例如:

这个命令是

代码语言:javascript
运行
复制
 taskset 0x2 time echo "foo"

相等于

代码语言:javascript
运行
复制
time taskset 0x2 echo "foo"

我需要知道,任务集后面的所有命令是否都具有相同的CPU关联,或者仅仅是紧随其后的命令。

EN

Stack Overflow用户

回答已采纳

发布于 2015-06-11 10:01:39

我需要知道taskset后面的所有命令是否都具有相同的CPU关联,或者仅仅是后面的命令。

下面是一个小实验:

开始两个BG任务

代码语言:javascript
运行
复制
$ > taskset 0x2 sleep 50 & sleep 60 &

拿到他们的PID

代码语言:javascript
运行
复制
$ > ps
  PID TTY          TIME CMD
18562 pts/81   00:00:00 bash
20750 pts/81   00:00:00 sleep
20751 pts/81   00:00:00 sleep
20752 pts/81   00:00:00 ps

获取已知PID的CPU关联:

代码语言:javascript
运行
复制
$ > taskset -p 20750
pid 20750's current affinity mask: 2
$ > taskset -p 20751
pid 20751's current affinity mask: 3f

因此,似乎只为第一个进程设置了CPU关联。

Update (试图解释以下行为):

  1. /usr/bin/time taskset 0x2 sleep 100000=>只有sleep才能获得亲和掩码2 (有点期待!)
  2. taskset 0x2 /usr/bin/time sleep 100000 => timesleep都得到了亲和掩码2 (需要澄清!)

在第二种情况下,让我们调用ps -f来获取每个进程的PPID (父PID):

代码语言:javascript
运行
复制
$> taskset 0x2 /usr/bin/time sleep 60 &
[1] 5942
$> ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
user      5942  9698  0 18:19 pts/261  00:00:00 /usr/bin/time sleep 60
user      5943  5942  0 18:19 pts/261  00:00:00 sleep 60
user      5944  9698  0 18:19 pts/261  00:00:00 ps -f
user      9509  9508  0 16:19 pts/261  00:00:00 -bash
user      9698  9509  0 16:20 pts/261  00:00:00 bash
$> taskset -p 5942
pid 5942's current affinity mask: 2
$> taskset -p 5943
pid 5943's current affinity mask: 2

可见,sleep的PPID (5942)与/usr/bin/time的PID (5942)相对应,IOW sleep/usr/bin/time的子进程,因为任何子进程都继承了父进程的配置,sleep/usr/bin/time具有相同的CPU亲和力。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30776315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档