如何从批处理文件为Windows XP设置处理器亲和性?

8
我有一台双处理器的机器,我想通过批处理文件在两个处理器上启动一个可执行文件。
例如: (1) 在处理器1上启动Notepad.exe, (2) 同时,在处理器2上启动Notepad.exe 目前,我在我的批处理文件中使用以下命令来启动我的可执行文件,因为我的可执行文件很难启动,需要返回才能运行: echo.|DoStuff.exe 因此,我希望它可以在每个处理器上运行。
谢谢提供任何反馈。
附注:我认为“start”对我没有用,因为我需要像上面的echo那样发送回车字符到可执行文件中。
附注2:这是针对Windows XP的解决方案。谢谢。

1
你可能需要重新考虑这个问题。一般来说,CPU调度程序会做出比你更好的决策。我们尝试过这种方法,实际上只是启动了两个单独的程序,却看到了轻微的性能下降。 - Steve
3个回答

20

开始 /affinity 1 记事本.exe

开始 /affinity 2 记事本.exe

(Windows 7 对于 start 命令有亲和性,但 XP 没有。PSexec 可以工作。)


很不幸,我不能使用start,因为我需要使用echo.|DoStuff.exe,所以一个返回语句被发送到可执行文件中。有没有办法设置亲和性并发送返回语句? - JustADude
2
如果您在批处理文件中使用“echo.|DoStuff.exe”命令,是否会将其关联到cmd实例的亲和性? - Anonymous
为什么0F没有像它应该的那样使用所有4个处理器? - Adrian Cumpanasu

6

Microsoft的Sysinternal的psexec的-a标志可以在Windows XP上设置处理器亲和性:

用法:psexec [\\计算机[,计算机2[,...] | @文件][-u 用户 [-p 密码]][-n s][-l][-s|-e][-x][-i
[会话]][-c [-f|-v]][-w 目录][-d][-][-a n,n,...] cmd [参数]
     -a         使用逗号分隔应用程序可以运行的处理器,其中1是编号最低的CPU。例如,
                要在CPU 2和CPU 4上运行应用程序,请输入:
                "-a 2,4"

例如:

psexec -a 2 cmd /c "echo.|DoStuff.exe"

明天我会试一下。非常感谢。 - JustADude

0
  • 此页面介绍了一个免费的工具XCPU,可以用来启动和设置CPU亲和性。不过链接已经失效,你可以试着谷歌一下找到它。

  • 还有一个类似的工具在这里,叫做runfirst。


它仍然可以在archive.org上找到,参见http://web.archive.org/web/20071012053544/http://www.appliedvisual.com/xcpu.htm。我在这里发布它,因为这是谷歌排名较高的结果之一,所以对某些人来说可能仍然有用。 - Ludovic Aelbrecht

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接