2

我有一个我正在尝试使用的程序经常崩溃,对此的修复之一是将其设置为仅使用一个处理器。我可以通过任务管理器手动轻松地做到这一点,但我更喜欢双击快捷方式的解决方案。

我试过用这行代码制作 .bat 文件:C:\Windows\System32\cmd.exe /C start /affinity 1 KSP.exe

但是,它只是拒绝运行。删除 /C 开关只会启动 cmdbox。

尝试在 cmdbox 中键入 /affinity 1 KSP.exe(谢天谢地,cmdbox 以 .bat 文件所在的目录开头,该目录与 .exe 所在的文件夹相同,因此没有问题)只会给出以下错误:

无效的开关 - “/affinity”。

4

2 回答 2

2

我自己尝试在较旧的 Win XP 32 位设备上运行 KSP 时遇到了同样的问题。cmd.exe 直到 Vista,IIRC 才收到 /affinity 开关。

我意识到 OP 已有一年多的历史了,但是对于某些用户而言,它目前仍然是一个问题。解决方案是使用 Sysinternals 的 psexec.exe 代替 cmd.exe,可以在此处找到:

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

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

Usage: psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i
[session]][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]
 -a         Separate processors on which the application can run with
            commas where 1 is the lowest numbered CPU. For example,
            to run the application on CPU 2 and CPU 4, enter:
            "-a 2,4"

例如:

psexec -a 2 cmd /c "E:Games\KSP\KSP.exe"

将在第二个核心上运行 KSP。(任务管理器中的核心 1)

只需更正系统的路径并将其放入 .bat 或快捷方式的目标字段中即可。

顺便说一句,您需要将 PsTools(或简单的 PsExec.exe)解压缩到 C:\Windows 或系统路径中的另一个文件夹中,或者将其放在您的 KSP 根目录中。

于 2014-07-17T03:43:27.627 回答
0

首先要注意,您必须通过右键 clic 和 sart 作为管理员或通过创建任务来为您的程序提供管理员权限。

因此,在以这些管理员权限启动 cmd 后,您可以通过以下方式启动程序:

<code>`start /AFFINITY 1 /B notepad.exe`</code>

使用 procexp,并在记事本进程上右键单击 + 设置关联,您将看到它仅使用处理器 0。

正在做:

<code>`start /AFFINITY 1 /B notepad.exe`</code>

你会看到它在处理器 2 上运行。

那么如果你想让你的进程在一半的核心上运行呢?

做这个:

<code>`start /AFFINITY AA /B notepad.exe`</code>

在八核上,它将在处理器 1、3、5、7 上运行

  • /AA 代表一半核心,奇数,(1, 3, 5, 7)
  • /A 表示核心的夸脱,奇数,(1, 3)
  • /F 表示前半部分,(0, 1, 2, 3)
  • /FF 代表所有,( 0, 1, 2, 3, 4, 5, 6, 7)

问候。

于 2014-12-24T09:11:34.650 回答