2017-09-15 163 views
-1

我有一个双处理器服务器,即每个处理器有多个核心和两个物理氙气处理器。在特定处理器上运行批处理文件

每个进程只能在一个处理器上运行,这很好。如果启动一个多线程应用程序,它只能在一个物理处理器上使用最大数量的内核,而不是两者都使用(Windows 10的限制?)。我想启动相同程序的两个实例,以便我可以使用两个处理器上的所有内核。

如何从批处理文件启动进程以使其在指定的处理器组上运行?即处理器1的核心0-16或处理器2的核心0-16?

我已经试过:

start /affinity FF file.exe 

但这只能运行它从一个特定的处理器内核。我相信我需要设置处理器组,但我该如何使用'start'命令来做到这一点?

我可以看到你可以使用十六进制蒙版与'开始'的亲和力,但似乎只能在第一个处理器的核心上工作,我似乎无法访问第二个处理器的核心。

由于我的问题存在很多混淆,请参阅下文。当您尝试设置亲和力时,它来自任务管理器,请注意我有多个处理器组?这就是我正在尝试使用“开始”命令进行配置。 “/亲和力”只使用核心从组0

Multiple processor groups

+0

MSDOS不是一个多任务操作系统。你有没有考虑切换到Linux? –

+0

您不应该关心哪些CPU正在运行,这是操作系统的业务,并且可能会经常更改。但搜索“CPU亲和力” –

+0

@GerhardBarnard对不起,感谢您的建议,但它不能解决我的问题 – ALM865

回答

3

通过您的“处理器组”组合来看,似乎必须将系统设置以呈现NUMA nodes与每个物理CPU被分配给单一节点。 This question talks about how to check the config,所以假设这是你如何设置,在命令行标志/node <NUMA index>将允许您选择哪个节点,所以我们得到:

start /node 1 file.exe 

这应该启动第二NUMA节点上的应用。请注意,您可能能够将此与/affinity标志结合起来,所以只有两个第一个节点的内核上运行,以下可能的工作:

start /node 0 /affinity 3 file.exe