【问题标题】:Run batch file on specific processor在特定处理器上运行批处理文件
【发布时间】: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


【解决方案1】:

从您的“处理器组”组合来看,您似乎已将系统设置为呈现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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2016-05-04
    • 2012-06-19
    • 2012-12-18
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多