如何限制一个进程只在单个 CPU 核心上运行?

如何限制一个进程只在单个 CPU 核心上运行?

如何限制Windows环境中运行的单进程程序仅在多核机器上的单个CPU上运行?

窗口程序和命令行程序是否相同?

更新:

  • 这样做的原因:对各种编程语言的各个方面进行基准测试
  • 我需要一些从一开始就能起作用的东西,因此@akseli 的答案虽然对其他情况很有用,但不能解决我的情况

答案1

如果您运行的是 Windows Vista/7(可能是 XP,但不确定),这确实相当简单。您必须是管理员才能运行此功能。

  1. Ctrl+ Shift+Esc打开任务管理器。
  2. 单击“进程”选项卡。
  3. 查找需要改变处理器亲和性的进程。
  4. 右键单击该进程。
  5. 点击“设置亲和力”。

您可以在这里选择您的流程将使用的处理器。

答案2

从命令行使用:

start /affinity 1 program.exe 

这将program.exe在第一个 CPU 上运行,因为“1”是亲和性掩码

CPU3 CPU2 CPU1 CPU0  Bin  Hex
---- ---- ---- ----  ---  ---
OFF  OFF  OFF  ON  = 0001 = 1
OFF  OFF  ON   OFF = 0010 = 2
OFF  OFF  ON   ON  = 0011 = 3
OFF  ON   OFF  OFF = 0100 = 4
OFF  ON   OFF  ON  = 0101 = 5 
OFF  ON   ON   OFF = 0110 = 6
OFF  ON   ON   ON  = 0111 = 7
ON   OFF  OFF  OFF = 1000 = 8
ON   OFF  OFF  ON  = 1001 = 9
ON   OFF  ON   OFF = 1010 = A 
ON   OFF  ON   ON  = 1011 = B
ON   ON   OFF  OFF = 1100 = C
ON   ON   OFF  ON  = 1101 = D
ON   ON   ON   OFF = 1110 = E 
ON   ON   ON   ON  = 1111 = F 

答案3

取决于你愿意做什么:

方法 1:按需

使用图像处理。此实用程序将允许您设置一个可执行文件以在任意数量的核心上运行。请确保在进行更改之前备份目标可执行文件,并在使用完毕后恢复它。

方法 2:强制整个 Windows 会话(Vista/7)

  1. bcdedit /set onecpu on在命令提示符下输入
  2. 重新启动系统。
  3. 游戏结束后,输入 2 - Type:bcdedit /set onecpu off然后重新启动。

方法 2:强制整个 Windows 会话(XP)

  1. 打开您的 boot.ini 文件(右键单击我的电脑 -> 属性 -> 高级选项卡 ->‘启动和恢复’下的设置按钮 ->‘系统启动’中的编辑按钮)。
  2. 您将在文件中找到以下(或类似)部分:

    [操作系统]

    多 (0) 磁盘 (0) rdisk (0) 分区 (2) \WINDOWS="Microsoft Windows XP Professional" /fastdetect

  3. 通过添加 /onecpu 标志来更改它:

    [操作系统]

    多 (0) 磁盘 (0) rdisk (0) 分区 (2) \WINDOWS="Microsoft Windows XP Professional" /fastdetect /onecpu

  4. 重启。游戏结束后删除标志并再次重启。

方法 0:不是一个好方法(处理器亲和性)

恐怕任何涉及处理器亲和性的东西都不是好选择。处理器亲和性是处理器的线索。处理器没有义务尊重它,而且通常不会。

答案4

在 Windows 8 中,您必须转到任务管理器的“详细信息”选项卡才能执行“设置关联性”。它不会在“进程”选项卡上提供选项。

编辑:此外,如果您要启动的程序有参数,那么这个线程可能会派上用场: 如何使用 Windows cmd 上的“start”命令启动带有命令行参数的程序?

相关内容