gpt4 book ai didi

linux - 为什么 pidstat 没有反射(reflect)我使用任务集对 CPU 亲和性所做的更改?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:43 25 4
gpt4 key购买 nike

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

abc@abc:~$ taskset -pc 1132 
pid 1132's current affinity list: 0

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

abc@abc:~$ pidstat |grep '1132'
10:01:37 AM 1132 0.00 0.00 0.00 0.00 3 runsv

为什么会这样?

最佳答案

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

0x00000001 is processor #0

0x00000003 is processors #0 and #1

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

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

检索到的掩码将仅反射(reflect)与系统上物理上的 CPU 相对应的位。如果给出的掩码无效(即对应于当前系统上没有有效 CPU 的掩码),则会返回错误。

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

# taskset  -p 0x0 1089
pid 1089's current affinity mask: ff000000ff0000ff00ff
taskset: failed to set pid 1089's affinity: Invalid argument

关于linux - 为什么 pidstat 没有反射(reflect)我使用任务集对 CPU 亲和性所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29343364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com