首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分配进程在部分CPU上工作?

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

Unix & Linux用户
提问于 2021-02-23 13:35:35
回答 3查看 846关注 0票数 1

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

我们有物理戴尔机器,共有12个核心(来自lscpu)

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

或者其他掩盖最后6个核心的方法,所以我们实际上只能使用前6个核心,或者分解最后6个核心,

注:这样做的真正原因是因为我们是每个核心支付许可证,如果我们可以使用总核心的一半,那么我们只能支付一半的价格。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2021-02-23 14:45:29

它的术语是CPU亲缘关系。您可以使用taskset命令为各个进程设置它。

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

代码语言:javascript
复制
taskset -c 0-5 <command> [arguments for command]

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

代码语言:javascript
复制
taskset -c 0-5 -p <PID of an existing process>

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

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

票数 4
EN

Unix & Linux用户

发布于 2021-02-23 13:55:41

是的,在RedHat系统中,通常一个人使用numactl

虽然它不能保证一个进程绑定到特定的CPU (因为它将允许绑定到另一个CPU,如果所需的CPU不可用,它将配置作业启动以尽最大努力绑定并(如果流程休眠)重新绑定到所需的CPU。

请注意,在本例中,CPU的意思是“可以运行程序的东西”,而不是物理项。这意味着一个真正的核心是一个CPU,它的超级线程是另一个CPU,通常一个物理包中有很多CPU。要获得这些CPU的列表:

代码语言:javascript
复制
cat /proc/cpuinfo
  • numactl --hardware显示硬件布局。每个节点都是一个“内存边界”,这意味着它是一个独立的RAM位,可以比其他CPU更快地从某些CPU访问。原因通常是因为它可以被一组CPU直接访问,而其他CPU必须通过这些边界发出请求才能访问该内存。这一点很重要,因为您还可以指示numactl只使用特定的内存边界。如果要指定特定的CPU,那么最好指定CPU本地的内存边界。
  • numactl --physcpubind=0-7 <command>将启动您通常在核心0到7上运行的<command>
  • numactl --physcpubind=0,7 <command>将在核心0或7上启动<command>

当然,这两者都可能“核心失败”,即当操作系统决定核心将不可用,并启动程序在一个非指定的核心,而不是推迟启动。numactl选项--localalloc将尝试使用内核本地的内存,而--membind=...则允许更显式的内存位置绑定。

numastat以统计形式显示numactl启动进程的numa_hitsnuma_misses。要查看是否有任何特定进程命中或错过,您需要在进程终止之前从/proc文件系统中读取详细信息。

票数 2
EN

Unix & Linux用户

发布于 2021-02-24 16:41:42

如果你试图避免授权成本,限制软件在哪个CPU上运行不会影响软件的核心检测。您可以请求该软件仅在某些核心上运行,但是该软件将检测所有核心,并根据许可/允许的配置检查该编号。

为了使这个工作以您想要的方式进行,我建议安装一个HyperVisor,将两个操作系统放在同一个硬件平台上。有些HyperVisors (如XEN )可以对硬件进行强分区,而另一些则不能。与其他虚拟机管理程序解决方案相比,可以对硬件进行强分区(硬件配置为独占支持单个VM),您可能会获得更大的成功。

这附带了一些要求。CPU必须粗略地分布在两个或多个包(实际CPU芯片)中,才能对CPU进行强分区,而机器的其余部分将无法访问为该应用程序保留的部分。这并不是100%理想的,因为这些限制,但它比必须购买一台新机器,如果你可以接受这些限制。

祝好运。在您尝试应用程序之前,通常不可能100%地知道这种解决方案是否适合您的应用程序。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/635983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档