Bash 将cpu核心分配给进程-Linux
有没有办法强制一个具有特定PID的进程只在服务器的一个cpu上执行和运行?我知道有这样的命令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
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是否已设置。