如何从命令行设置 Windows 可执行文件的组和关联

Zar*_*reh 8 windows shortcuts affinity command-line-arguments

我有一个可执行文件foo.exe,我需要在多处理器设置上同时运行 6 次,其中前 3 个实例将分配给组 0 中的核心,接下来的 3 个实例将分配给组 1 中的核心。

foo.exe我的桌面上有 6 个程序快捷方式。每个快捷方式都为foo.exe程序提供了一组不同的参数来运行。

我只需单击快捷方式即可运行程序的 6 个实例foo.exe。它们都启动了,但是然后我必须进入任务管理器并通过设置它们的组关联来确保将 3 个分配给组 0 中的 CPU,将 3 个分配给 CPU 的组 1。

有没有办法可以修改桌面上的快捷方式,以确保其中 3 个foo.exe程序使用 Group 0 而其中 3 个程序使用 Group 1?

MrF*_*egg 8

您可以使用该命令使用/affinity标志start来指定进程应使用的核心。

用法

start /affinity n foo.exe -arguments

因此,您的快捷方式如下所示:

c:\windows\system32\cmd.exe /C start /affinity n foo.exe -arguments 其中 n 是 CPU 核心数 +1。

因此,要在 Core 0 上运行,它将是:

c:\windows\system32\cmd.exe /C start /affinity 1 foo.exe -arguments.

来源

指定多核

假设一个 CPU 有 4 个内核。要指定要使用的核心:

  1. 将内核可视化为一个数组,数组的长度等于内核数。核心将按从右到左的降序排列:

    [CPU3, CPU2, CPU1, CPU0]

  2. 现在,将您希望进程使用的内核替换为 1,将不希望使用的内核替换为 0。假设我希望我的进程使用内核 3 和 1,我的数组将如下所示:

    [0,1,0,1]

  3. 将数组元素“弹出”为字符串。现在它将表示为 0101.

  4. 假设字符串是二进制的并将其转换为十六进制。现在它会是0x5

  5. 现在使用相同的命令,start /affinity n foo.exe -arguments但现在n将是0x5,给出start /affinity 0x5 foo.exe -arguments

来源

笔记:
  • 来源将可视化解释为二进制字符串,而不是数组(请查看)。我觉得这有点令人困惑,所以我使用数组进行了解释。
  • 源没有指定您必须0x在命令中添加前缀以显示它的十六进制。阅读start /?指定它是十六进制。