Запуск исполняемого файла с использованием /affinity в cmd.exe (Windows XP)

У меня есть программа, которую я пытаюсь использовать, которая часто дает сбой, и одним из исправлений для этого является настройка на использование только одного процессора. Я легко могу сделать это через диспетчер задач вручную, но я бы предпочел решение, аналогичное двойному щелчку по ярлыку.

Я попытался сделать в.bat файл с этой строкой кода: C:\Windows\System32\cmd.exe /C start /affinity 1 KSP.exe

Тем не менее, он просто отказывается бежать. удаление ключа / C только запускает cmdbox.

Попытка набрать / affinity 1 KSP.exe в cmdbox (К счастью, cmdbox начинается с каталога, в котором находится файл.bat, который является той же папкой, в которой находится.exe, поэтому проблем там нет), просто выдает эту ошибку:

Неверный переключатель - "/affinity".

2 ответа

Я только что столкнулся с этой же проблемой, пытаясь запустить KSP на более старой 32-разрядной установке Win XP. cmd.exe не получал ключ /affinity до Vista, IIRC.

Я понимаю, что OP уже более года, но для некоторых пользователей это все еще проблема. Решение заключается в использовании psexec.exe от Sysinternals вместо cmd.exe, который можно найти здесь:

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

Флаг psexec от sysinternal от Microsoft может установить привязку процессора к 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 на 2-м ядре. (Core 1 в диспетчере задач)

Просто исправьте путь для вашей системы и поместите его в поле.bat или поле Target ярлыка.

Кроме того, вам нужно извлечь PsTools (или просто PsExec.exe) либо в C:\Windows, либо в другую папку в системном пути, либо поместить его в корень KSP.

Во-первых, имейте в виду, что вы должны предоставить администратору право на вашу программу, либо щелкнув правой кнопкой мыши и запустив от имени администратора, либо создав задачу.

Итак, после того, как вы запустили свой cmd с правами администратора, вы можете запустить программу следующим образом:

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

Используя procxp, и щелкните правой кнопкой мыши + set affinity в процессе блокнота, вы увидите, что он использует только процессор 0.

Выполнение:

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

И вы увидите, что он работает на процессоре 2.

Тогда, если вы хотите, чтобы ваш процесс работал на половине ядра?

Сделай это:

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

На octo-ядре он будет работать на процессорах 1, 3, 5, 7

  • / AA для половины ядер, нечетное, (1, 3, 5, 7)
  • / А для кварта ядер, нечетное, (1, 3)
  • / F для первой половины, (0, 1, 2, 3)
  • / FF для всех, ( 0, 1, 2, 3, 4, 5, 6, 7)

С уважением.

Другие вопросы по тегам