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


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.