在 linux 上禁用四核处理器上的 cpu 内核

use*_*847 17 linux cpu arm

我想禁用 3 个 CPU 内核并在单个内核上运行我的处理器。我使用过命令:maxcpus=1. 但在此之后我执行了这个命令ls /sys/devices/system/cpu。它仍然显示cpu0,cpu1,cpu2,cpu3

我也试过:echo 0 > /sys/devices/system/cpu3/online但我收到以下错误:no such file or directory

Gil*_*il' 31

正如帕特里克在评论中指出的那样,您的路径/sys错误。

echo 0 > /sys/devices/system/cpu/cpu3/online
Run Code Online (Sandbox Code Playgroud)

如果要关闭所有 CPU,除了cpu0

for x in /sys/devices/system/cpu/cpu[1-9]*/online; do
  echo 0 >"$x"
done
Run Code Online (Sandbox Code Playgroud)

maxcpus=1在 shell 提示符下键入没有任何效果。更准确地说,它将变量设置为该 shell 中maxcpus的值1,这没有任何其他影响。您可以通过maxcpus作为内核参数传递来设置启动时的 CPU 数量。为此,您必须更改引导加载程序配置(例如,更改 U-Boot 中的内核命令行)。

  • @Xofo 当内核关闭某个内核时,该内核正在运行内核代码,因此此时没有在该特定内核上调度线程。核心关闭后,线程不再被调度到该核心上。我不知道如果一个线程的亲和性将它限制在一组全部关闭的核心上会发生什么。 (2认同)