【发布时间】:2017-09-15 05:53:50
【问题描述】:
我有一台带有双处理器的服务器,即每个处理器有多个内核和两个物理 Xenon 处理器。
每个进程只能在一个处理器上运行,这很好。如果您启动一个多线程应用程序,它只能在一个物理处理器上使用最大数量的内核,而不是两者(Windows 10 限制?)。我想启动同一个程序的两个实例,以便可以使用两个处理器上的所有内核。
如何从批处理文件启动一个进程,以便它在指定的处理器组上运行? IE。处理器 1 的核心 0-16,还是处理器 2 的核心 0-16?
我试过了:
start /affinity FF file.exe
但这只能在一个特定处理器的内核上运行。我相信我需要设置处理器组,但如何使用“开始”命令来设置?
我可以看到您可以使用十六进制掩码与“start”关联,但这似乎只适用于第一个处理器的内核,我似乎无法访问第二个处理器的内核。
由于我的问题有很多困惑,请参阅下文。当您尝试设置关联时,它来自任务管理器,请注意我如何拥有多个处理器组?这就是我试图使用“开始”命令配置的内容。 '/affinity' 仅使用第 0 组的核心。
【问题讨论】:
-
MSDOS 不是多任务操作系统。你考虑过改用 Linux 吗?
-
你不应该关心这些东西在哪个 CPU 上运行,这是操作系统的业务并且可以经常改变。但搜索“CPU 亲和力”
-
@GerhardBarnard 抱歉,感谢您的建议,但它不能解决我的问题
-
好的,再来一次 - 你的“处理器组”组合框可能表明你有 NUMA 节点。 This question talks about it,所以你可以说
start /node 1来使用第二个CPU。此外,我猜你可以结合/node和/affinity在每个物理 CPU 的选定内核上运行。 -
@KenY-N 谢谢你的工作。节点 1 访问第二个处理器。把它写在一个快速的答案中,我会投票赞成。
标签: batch-file