如何运行只有一个 CPU 内核的程序?

use*_*115 30 cpu

我正在尝试在 Terminator 中运行一堆与游戏服务器相关的脚本。唯一的问题是,当我这样做时,终结者会检测到我所有的 CPU 内核并且 PC 滞后。有什么方法可以启动它,但让它以为我只有 1 个 CPU 内核?

Rma*_*ano 50

这并不是terminator在给定进程的所有 CPU 上进行“传播”。Linux 本身(内核)正在这样做。默认情况下,任务(进程)被调度为可在所有 CPU 上运行;如果它使用线程,它一次可以使用多个 CPU。

要将进程限制为特定 CPU,请使用命令taskset

taskset --cpu-list 1,2 my_command 
Run Code Online (Sandbox Code Playgroud)

此命令强制 my_command 仅在 CPU #1 或 #2 上运行。

要了解更多信息,请输入man taskset或搜索“linux CPU 关联性”(首先点击此处)。

  • 顺便说一句,您也可以尝试仅对“坏”进程进行重新处理,降低它们的调度优先级。 (2认同)
  • 父进程的子进程呢?它们是否继承了父进程的核心/cpu 亲和性? (2认同)

Val*_*ity 7

虽然另一个答案已经给出了字面的答案,但我会探讨这不是以正确的方式完成的可能性。相反,您应该使用该nice命令运行一个不想减慢计算机速度的脚本(例如非交互式脚本)。

为此,只需在您希望运行的命令前面加上 nice,例如: nice command_to_run 这将导致程序的优先级低于其他任务,并且不会减慢您的机器速度。我经常在进行长时间编译时使用这种技术,否则会减慢我的 PC 到爬行的速度,这具有允许程序在机器不忙时使用所有内核的优点,但会在您运行某些内容时迅速停止使用它们别的。