Bash 将cpu核心分配给进程-Linux

Bash 将cpu核心分配给进程-Linux,bash,process,cpu,affinity,Bash,Process,Cpu,Affinity,有没有办法强制一个具有特定PID的进程只在服务器的一个cpu上执行和运行?我知道有这样的命令 taskset -cp <Cpu_Number> <Pid> taskset-cp 但是上面的命令在我的系统上不起作用。所以如果还有其他命令,请告诉我 有两种方法可以将cpu核心分配给正在运行的进程 第一种方法: taskset -cp 0,4 9030 taskset -p 0x11 9030 很清楚!将cpu核心0和4分配给pid 9030 第二种方法: taskse

有没有办法强制一个具有特定PID的进程只在服务器的一个cpu上执行和运行?我知道有这样的命令

taskset -cp <Cpu_Number> <Pid>
taskset-cp

但是上面的命令在我的系统上不起作用。所以如果还有其他命令,请告诉我

有两种方法可以将cpu核心分配给正在运行的进程

第一种方法:

taskset -cp 0,4 9030
taskset -p 0x11 9030
很清楚!将cpu核心0和4分配给pid 9030

第二种方法:

taskset -cp 0,4 9030
taskset -p 0x11 9030
这有点复杂。
-p
后面的十六进制数是位掩码。可以找到一个解释,摘录如下:

CPU相关性表示为位掩码,具有最低阶数 与第一个逻辑CPU和最高阶位相对应的位 对应于最后一个逻辑CPU。并非所有CPU都可能存在于同一台计算机上 给定系统,但掩码可能指定比当前更多的CPU。A. 检索到的掩码将只反映与CPU对应的位 在系统上进行物理访问。如果给出了无效的掩码(即 对应于当前系统上没有有效的CPU)出现错误 返回。掩码通常以十六进制表示

还困惑吗?请看下图:

我添加了对应于十六进制数的二进制文件,处理器从零开始从左开始计数。在第一个示例中,位掩码中有一个
one
,对应于
zero
th处理器,因此将为进程启用处理器。将禁用位掩码中对应位置为0的所有处理器。事实上,这就是它被称为面具的原因。

综上所述,使用taskset更改处理器相关性需要:

用户必须拥有CAP_SYS_NICE才能更改 过程任何用户都可以检索关联掩码

请检查一下电话号码

你可能会有兴趣看看这本关于CAP_SYS_NICE的书

我的资源


  • 什么是服务器操作系统?用户必须拥有
    CAP\u SYS\u NICE
    才能更改进程的CPU相关性。任何用户都可以检索关联掩码。逃避您刚才发布的问题是不公平的。请等待即时的评论。评论通常有助于澄清您的问题question@mahdi:我可以知道你是怎么分类的吗?你提供的第二种方法只是第一种方法的另一种表示吗?或者第二种方法对CPU分配的影响更大?我使用命令
    ps-opid,psr,comm-p
    查看分配给特定进程的CPU。然后,我尝试通过以下命令
    taskset-cp
    更改此cpu分配。然后我再次使用命令
    ps-opid、psr、comm-p
    ,我看到之前的cpu分配没有改变。
    Linux将传统上与超级用户相关的特权划分为不同的单元,称为能力,可以独立启用和禁用。
    默认情况下,我猜root用户的CAP\u SYS\u NICE是启用的。。您可以使用此命令
    lcap-c CAP\u SYS\u NICE
    检查CAP\u NICE是否已设置。