我想要更改PID为1132的进程的CPU亲和性,因此我使用以下命令并成功地更改了它的CPU亲和性:
abc@abc:~$ taskset -pc 1132
pid 1132's current affinity list: 0但是当我尝试查看PID 1132正在使用的CPU时,我得到的是相同的旧CPU。CPU 3
abc@abc:~$ pidstat |grep '1132'
10:01:37 AM 1132 0.00 0.00 0.00 0.00 3 runsv为甚麽呢?
发布于 2015-03-31 04:08:09
关联列表错误。您应该将进程1132分配给一个或多个cpus。当前关联列表为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可能多于现有的CPU。\
检索到的掩码将仅反映系统上物理上对应于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 argumenthttps://stackoverflow.com/questions/29343364
复制相似问题