我需要问这个问题,只是为了复核答案。
命令的顺序重要吗?例如:
这个命令是
taskset 0x2 time echo "foo"相等于
time taskset 0x2 echo "foo"我需要知道,任务集后面的所有命令是否都具有相同的CPU关联,或者仅仅是紧随其后的命令。
发布于 2015-06-11 10:01:39
我需要知道
taskset后面的所有命令是否都具有相同的CPU关联,或者仅仅是后面的命令。
下面是一个小实验:
开始两个BG任务
$ > taskset 0x2 sleep 50 & sleep 60 &拿到他们的PID
$ > 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关联:
$ > taskset -p 20750
pid 20750's current affinity mask: 2
$ > taskset -p 20751
pid 20751's current affinity mask: 3f因此,似乎只为第一个进程设置了CPU关联。
Update (试图解释以下行为):
/usr/bin/time taskset 0x2 sleep 100000=>只有sleep才能获得亲和掩码2 (有点期待!)taskset 0x2 /usr/bin/time sleep 100000 => time和sleep都得到了亲和掩码2 (需要澄清!)在第二种情况下,让我们调用ps -f来获取每个进程的PPID (父PID):
$> 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亲和力。
https://stackoverflow.com/questions/30776315
复制相似问题