首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么pidstat没有反映我使用taskset在CPU亲和性中所做的更改?

为什么pidstat没有反映我使用taskset在CPU亲和性中所做的更改?
EN

Stack Overflow用户
提问于 2015-03-30 18:03:24
回答 1查看 565关注 0票数 1

我想要更改PID为1132的进程的CPU亲和性,因此我使用以下命令并成功地更改了它的CPU亲和性:

代码语言:javascript
复制
abc@abc:~$ taskset -pc 1132 
pid 1132's current affinity list: 0

但是当我尝试查看PID 1132正在使用的CPU时,我得到的是相同的旧CPU。CPU 3

代码语言:javascript
复制
abc@abc:~$ pidstat |grep '1132'
10:01:37 AM      1132    0.00    0.00    0.00    0.00     3  runsv

为甚麽呢?

EN

回答 1

Stack Overflow用户

发布于 2015-03-31 04:08:09

关联列表错误。您应该将进程1132分配给一个或多个cpus。当前关联列表为0,这是错误的。如果要分配给CPU 0,则应使用0x00000001,如下所示:

代码语言:javascript
复制
0x00000001 is processor #0

0x00000003 is processors #0 and #1

0xFFFFFFFF is all processors (#0 through #31).

CPU亲和性被表示为位掩码,其中最低位对应于第一个逻辑CPU,最高位对应于最后一个逻辑CPU。并非所有CPU都可能存在于给定的系统上,但掩码指定的CPU可能多于现有的CPU。\

检索到的掩码将仅反映系统上物理上对应于CPU的位。如果提供了无效的掩码(即,对应于当前系统上没有有效CPU的掩码),则会返回错误。

在我的linux (内核4.0)上,我无法将CPU列表0x0分配给进程:

代码语言:javascript
复制
# taskset  -p 0x0 1089
pid 1089's current affinity mask: ff000000ff0000ff00ff
taskset: failed to set pid 1089's affinity: Invalid argument
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29343364

复制
相关文章

相似问题

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