24

我正在使用该start /AFFINITY [n] [.exe]命令启动具有指定亲和力的可执行文件。我有一个有 8 个处理器(1、2、3、4、5、6、7、8)的系统。我想将进程设置为使用所有奇数处理器(1、3、5、7)。我无法弄清楚如何做到这一点,并想知道是否可以使用 start 命令。如果没有,是否有替代的命令行方式来做到这一点?

start 命令的帮助并不是特别有用:

 AFFINITY    Specifies the processor affinity mask as a hexadecimal number.
             The process is restricted to running on these processors.

             The affinity mask is interpreted differently when /AFFINITY and
             /NODE are combined.  Specify the affinity mask as if the NUMA
             node's processor mask is right shifted to begin at bit zero.
             The process is restricted to running on those processors in
             common between the specified affinity mask and the NUMA node.
             If no processors are in common, the process is restricted to
             running on the specified NUMA node.
4

3 回答 3

31

AFFINITY 与十六进制掩码一起工作,应该允许对所有处理器进行精细控制。请注意,最右边的位指定最低阶 CPU (0)(参见KB 299641)。

对于有问题的情况,0xAA (10101010) 请求您的进程使用处理器 1、3、5 和 7 运行,但不是 0、2、4 或 6。请务必在命令行中省略“0x”。

 start /affinity AA app.exe

其他示例:

 start /affinity 1 app.exe     (only use CPU 0)
 start /affinity 2 app.exe     (only use CPU 1)
 start /affinity 1F app.exe    (only use CPUs 0, 1, 2, 3, and 4)
于 2011-10-13T20:33:23.557 回答
11

要获得正确的十六进制数,请想象您的内核在平面格式 8765 4321(用于 8 核 CPU)中向后方向(但不像 1234 5678)

要激活核心 7、6 和 3,请输入0x64关联性编号:

/AFFINITY 0x64

为了更好地查看、匹配和比较:0110 0100- number = 0x64(8765 4321) - cores

对于@ladenedge 示例:/AFFINITY AA 1010 1010- number = 0xAA (8765 4321) - cores

另请参阅:在 Windows 7、8 或 Vista 中启动分配给特定 CPU 的应用程序

于 2013-09-01T17:01:04.463 回答
6

更多信息以满足您自己的计算需求:

CPU ID  CPU value (dec)
0       001 (= 2^0)
1       002 (= 2^1)
2       004 (= 2^2)
3       008 (= 2^3)
4       016 (= 2^4)
5       032 (= 2^5)
6       064 (= 2^6)
7       128 (= 2^7)

最后:

  • CPU ID 0、1、2、3、4、5、6、7 的掩码:255(各个 CPU 十进制值的总和),即十六进制的“FF”掩码
  • CPU ID 0、2、4、6 的掩码:85(各个 CPU 十进制值的总和),即 '55' 掩码为十六进制

参考:在https://msdn.microsoft.com/en-US/library/ms187104.aspx搜索“这些是 8-CPU 系统的关联掩码值”模式。

于 2017-03-19T14:42:00.100 回答