Jak na stałe ustawić powinowactwo procesu?


17

Mam grę, która ma problemy z wykorzystaniem procesora, więc jedną z poprawek jest wyłączenie jednego rdzenia z procesora czterordzeniowego. Ponieważ za każdym razem, gdy uruchamiam grę, muszę ręcznie przejść do Menedżera zadań i ręcznie wprowadzić powinowactwo, które jest do bani, ponieważ gra jest nowo wydana, ale jest podatna na częste awarie.

Czy istnieje rozwiązanie NON SOFTWARE?

Szukałem niektórych rozwiązań online i wydaje się, że są one ukierunkowane tylko na Windows 7. Czy istnieje rozwiązanie dla użytkowników systemu Windows 8.1 takich jak ja?


Wyjaśnij, co rozumiesz przez „ręczne wprowadzenie powinowactwa”?
— Pacerier

@Pacerier Muszę ręcznie zmienić powinowactwo, ponieważ domyślnie wybiera wszystkie procesory do pracy.
— yuritsuki

Możesz spróbować ustawić „tryb zgodności” na wystarczająco starą wersję systemu Windows, która ustawia powinowactwo do jednego rdzenia. Ale nie mam pod ręką Win8, aby sprawdzić, czy to nadal działa.
— CodesInChaos

@cyberwebpoweruser, Czy poniższa odpowiedź działała dla Ciebie?
— Pacerier

Odpowiedzi:


24

Możesz utworzyć skrót do przypisania powinowactwa.

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

Y jest szesnastkowy i jest trochę maską:

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
myślę, że masz pierwsze 3 pomieszane
— Richie Frame

Och, cholera .. tak :) Poprawione ..
— The_aLiEn

4
@The_aLiEn pytanie: jeśli ten proces rozpoczyna inny proces, czy ten drugi proces dziedziczy powinowactwo pierwszego procesu? Mam ten sam problem z grą, ale muszę zmienić koligację zarówno w programie uruchamiającym, jak i zewnętrznym menedżerze pobierania uruchomionym przez program uruchamiający, aby można go było rozwiązać.
— Nzall

2
Potrzebujesz cmd.exe /Cczęści, czy może wystarczyłby na początek start?
— deltab

2
@NateKerkhofs powinien odziedziczyć. Nie tylko powinowactwo, jak wszystkie deskryptory zabezpieczeń, uchwyty itp.
— The_aLiEn

7

Jeśli przez „nie oprogramowanie” masz na myśli, że nie potrzebujesz dodatkowego oprogramowania, jest. Możesz uruchomić program ze skryptu poleceń i użyć przełącznika koligacji"Start /AFFINITY 20 process.exe"

/AFFINITY 20traktuje tę 20liczbę jako liczbę szesnastkową z binarnym odpowiednikiem 100000, która ustawia powinowactwo do rdzenia 5 z 0-5 na procesorze 6-rdzeniowym. Podobna maska ​​szesnastkowa pozwala wyłączyć określony rdzeń, taki jak E, który uruchamia proces tylko na rdzeniach 1-3 z 0-3 lub 0-5.


„inne niż oprogramowanie” oznacza cmd.
— Pacerier

5

Dla wszystkich, którzy szukają odpowiedzi na to pytanie i nie znajdują żadnej, znalazłem rozwiązanie polegające na użyciu aplikacji o nazwie WinAFC (lub AffinityChanger). Jest to częściowy GUI, częściowa aplikacja wiersza poleceń, która pozwala określić profile dla niektórych plików wykonywalnych i przeszukuje dla nich listę procesów. Jeśli znajdzie pasujące procesy, zmieni powinowactwo tych procesów zgodnie z ustawieniami w załadowanym profilu.

Jest tu trochę dokumentacji: http://affinitychanger.sourceforge.net/

Na moje potrzeby utworzyłem profil, który wyglądał tak:

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

Ten profil ustawia dowolny proces convert.exe na użycie pierwszych dwóch par rdzenia procesora (CPU0, CPU1, CPU2 i CPU3), odpytujących co sekundę. TestModeto przełącznik, który pozwala zobaczyć, czy Twój profil działa bez faktycznego ustawiania koligacji.

Mam nadzieję, że ktoś uzna to za przydatne!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.