如何仅使用一个 CPU 核心来运行程序?

如何仅使用一个 CPU 核心来运行程序?

我正在尝试在 Terminator 中运行一堆与游戏服务器相关的脚本。唯一的问题是,当我这样做时,Terminator 会检测到我所有的 CPU 核心,并且 PC 会滞后。有没有办法启动它,但又欺骗它认为我只有 1 个 CPU 核心?

答案1

并不是terminatorLinux 本身(内核)在执行此操作。默认情况下,任务(进程)被安排在所有 CPU 上运行;如果它使用线程,则可以同时使用多个 CPU。

要将进程限制到特定的 CPU,可以使用命令taskset

taskset --cpu-list 1,2 my_command 

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

要了解更多信息,请输入man taskset或搜索“linux CPU affinity”(第一个结果这里)。

答案2

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

要做到这一点,只需在要运行的命令前加上 nice 前缀,例如: nice command_to_run 这将使程序的优先级低于其他任务,并且不会降低机器的速度。我经常在进行长时间编译时使用这种技术,否则我的电脑会变得非常慢,这种方法的优点是允许程序在机器不忙时使用所有内核,但当您运行其他程序时,它会迅速停止使用它们。

相关内容