Как мне навсегда установить сродство процесса?

17

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

Есть ли НЕ ПРОГРАММНОЕ решение?

Я посмотрел некоторые решения онлайн, и они, похоже, ориентированы только на Windows 7. Есть ли решение для пользователей Windows 8.1, таких как я?

yuritsuki
источник
Пожалуйста, объясните, что вы подразумеваете под "ручным вводом сродства"?
Pacerier
@Pacerier Мне нужно вручную изменить сродство, так как по умолчанию он выбирает все процессоры для работы.
Юрицуки
Вы можете попробовать установить «Режим совместимости» для достаточно старой версии Windows, которая устанавливает привязку к одному ядру. Но у меня нет win8 под рукой, чтобы проверить, все ли это работает.
CodesInChaos
@cyberwebpoweruser, у вас сработал ответ ниже?
Пейсер

Ответы:

23

Вы можете создать ярлык для назначения сходства.

X:\Windows\System32\cmd.exe /C start /affinity Y game.exe

Y является шестнадцатеричным и немного битовой маской:

0x1 - 0001 - Core0
0x2 - 0010 - Core1
0x3 - 0011 - Core1 & Core0
0x4 - 0100 - Core2
0x5 - 0101 - Core2 & Core0
0x6 - 0110 - Core2 & Core1
0x7 - 0111 - Core2 & Core1 & Core0
0x8 - 1000 - Core3
0x9 - 1001 - Core3 & Core0
0xA - 1010 - Core3 & Core1
0xB - 1011 - Core3 & Core1 & Core0
0xC - 1100 - Core3 & Core2
0xD - 1101 - Core3 & Core2 & Core0
0xE - 1110 - Core3 & Core2 & Core1
0xF - 1111 - Core3 & Core2 & Core1 & Core0
The_aLiEn
источник
1
я думаю, что у вас есть первые 3 испорчены
Ричи Фрейм
О, черт .. да :) Исправлено ..
The_aLiEn
4
@The_aLiEn вопрос: Если этот процесс запускает другой процесс, наследует ли этот второй процесс сходство первого процесса? У меня та же проблема с игрой, но мне нужно изменить привязку как на панели запуска, так и на стороннем менеджере загрузок, который запускается программой запуска, для ее решения.
Nzall
2
Вам нужна cmd.exe /Cчасть, или этого будет достаточно для начала start?
Deltab
2
@NateKerkhofs это должно наследовать. Не только сходство, как и все дескрипторы безопасности, принадлежащие им дескрипторы и т. Д.
The_aLiEn
7

Если под «не программным обеспечением» вы подразумеваете, что вам не нужно дополнительное программное обеспечение, это так. Вы можете запустить программу из командного скрипта и использовать переключатель сродства"Start /AFFINITY 20 process.exe"

/AFFINITY 20обрабатывает 20как шестнадцатеричное число с двоичным эквивалентом 100000, который устанавливает сродство к ядру 5 из 0-5 на 6-ядерном процессоре. Подобная шестнадцатеричная маска позволит вам отключить определенное ядро, например E, которое запускает процесс только на ядрах 1-3 из 0-3 или 0-5.

Ричи Фрейм
источник
«не программный» означает cmd.
Пейсер
5

Для тех, кто ищет ответы на эти вопросы и не находит их, решение, которое я нашел, состояло в том, чтобы использовать приложение под названием WinAFC (или AffinityChanger). Это частичный графический интерфейс, частичное приложение командной строки, которое позволяет вам задавать профили для определенных исполняемых файлов и опрашивать список процессов для них. Если он находит совпадающие процессы, он изменит сходство этих процессов в соответствии с настройками в загруженном профиле.

Здесь есть некоторая документация: http://affinitychanger.sourceforge.net/

Для моих целей я создал профиль, который выглядел так:

TestMode = 0
TimeInterval = 1
*\convert.exe := PAIR0+PAIR1

Этот профиль устанавливает любой процесс convert.exe для использования первых двух пар ядер ЦП (CPU0, CPU1, CPU2 и CPU3), опрашивая каждую секунду. TestModeэто переключатель, который позволяет вам видеть, работает ли ваш профиль без фактической установки сходства.

Надеюсь, кто-то найдет это полезным!

Джейк
источник