如何分配进程在部分CPU上工作?

yae*_*ael 2 linux cpu process rhel

我们希望仅在前6 个 CPU上运行我们的应用程序(进程) 。我们有一台 RHEL 机器。

我们有物理 DELL 机器,共有 12 核(来自lscpu

是否可以指定进程仅使用前 6 个核心?

或者其他屏蔽最后​​ 6 个核心的方法,这样我们实际上可以只使用前 6 个核心,或者停用最后 6 个核心,

注意: 真正的原因是我们按核心付费,如果我们可以使用总核心的一半,那么我们只需支付一半的价格

tel*_*coM 5

对此的术语是CPU 亲和性。您可以使用该taskset命令为各个进程进行设置。

<command>仅在前 6 个核心(核心 #0-#5)上运行:

taskset -c 0-5 <command> [arguments for command]
Run Code Online (Sandbox Code Playgroud)

如果进程已经在运行,您可以通过 PID 设置其关联性:

taskset -c 0-5 -p <PID of an existing process>
Run Code Online (Sandbox Code Playgroud)

如果您想要一个适用于特定进程及其所有子进程的限制,那么您将需要 Stephen Kitt 在评论中提到的 cgroup。如果相关进程作为systemd服务运行,那么您只需添加CPUAffinity=0-5[Service]相应.service文件的部分(或创建覆盖文件)。

但是,如果您需要限制用于许可目的的内核数量,则需要找出相关软件供应商接受哪些方法。他们可能需要一种不太容易撤消的方法,或者他们可能需要一种机制,例如每日报告该软件每天使用了多少个核心(最大)。


归档时间:

查看次数:

1657 次

最近记录:

4 年,10 月 前