Як я постійно встановлюю спорідненість процесу?


17

У мене є гра, яка має проблеми з використанням процесора, тому одне з виправлень полягає у відключенні одного ядра з чотирьохядерного процесора. З кожного запуску гри я повинен вручну зайти в диспетчер завдань і вручну ввести афінність, яка відстійна, оскільки гра щойно випущена, але схильна до частих збоїв.

Чи є НЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ?

Я шукав деякі рішення в Інтернеті, і вони, здається, спрямовані лише на Windows 7. Чи є рішення для користувачів Windows 8.1, таких як я?


Поясніть, будь ласка, що ви маєте на увазі під «ручним введенням спорідненості»?
Печер'є

@Pacerier Мені потрібно вручну змінити спорідненість, оскільки за замовчуванням він підбирає всі процесори для роботи.
юріцукі

Ви можете спробувати встановити "Режим сумісності" на достатньо стару версію Windows, яка встановлює спорідненість до одного ядра. Але я не маю під рукою win8, щоб перевірити, чи все ще працює.
CodesInChaos

@cyberwebpoweruser, Чи відповідь нижче був для вас?
Pacerier

Відповіді:


24

Ви можете створити ярлик, щоб призначити спорідненість.

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

1
Я думаю, у вас перші 3 переплуталися
Річі Кадр

Ой, чорт .. так :) Виправлено ..
The_aLiEn

4
Питання @The_aLiEn: Якщо цей процес запускає інший процес, чи успадковує цей другий процес спорідненість першого процесу? У мене однакова проблема з грою, але мені потрібно змінити спорідненість як на запуску, так і на сторонній диспетчер завантажень, який запускається пусковим пристроєм для її вирішення.
Nzall

2
Вам потрібна cmd.exe /Cдеталь, чи це було б достатньо для початку start?
дельтаб

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.
Pacerier

5

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

Тут є деяка документація: http://affinitychanger.sourceforge.net/

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

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

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

Сподіваюся, хтось вважає це корисним!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.