Co to jest priorytet i koligacja systemu Windows i jakie oferuje ulepszenia?

9

Czym dokładnie jest Priorytet i koligacja (znalezione w Menedżerze zadań) i do czego służą:

Znaleziono w Menedżerze zadań

W jakich sytuacjach należy / można ich użyć i jakie korzyści można znaleźć podczas dostosowywania tych ustawień.

James Mertz
źródło

Odpowiedzi:

3

Ustawienie powinowactwa coś robi, ale nigdy nie będziesz chciał tego używać.

Ustawienie powinowactwa procesora zmusza system Windows do używania tylko wybranego procesora (lub rdzeni). Jeśli ustawisz powinowactwo do jednego procesora, system Windows będzie uruchamiał tę aplikację tylko na tym procesorze, nigdy na żadnym innym.

Windows automatycznie umieszcza uruchomione aplikacje na najmniej obciążonym procesorze, więc ograniczenie go do jednego procesora nie pozwala Windowsowi wykonać swojej pracy. Nawet jeśli procesor / rdzeń 1 jest zajęty uruchamianiem innych aplikacji, system Windows nie będzie mógł uruchomić aplikacji z powinowactwem ustawionym na procesorze / rdzeniu 2.

Naprawdę jedynym powodem, dla którego chcesz to zrobić, jest uruchomienie starej aplikacji, która nie działa poprawnie, gdy działa na systemie wieloprocesorowym / rdzeniowym.

shf301
źródło
5
> nigdy nie będziesz chciał z niego korzystać. Nie prawda. Jeśli masz aplikację jednowątkową, nie może ona w pełni wykorzystywać wątków / rdzeni procesora i system Windows nie może nic zrobić, aby wymusić / oszukać. Jeśli masz dwie aplikacje jednowątkowe, możesz powiedzieć systemowi Windows, aby każda z nich używała osobnego wątku / rdzenia, dzięki czemu zamiast całkowitego zawieszenia procesora około 50-75%, możesz zwiększyć go do 100% (każdy rdzeń maksymalnie wykorzystane przez jeden program). Tak, rzeczywiście możesz skorzystać z tego ustawienia, ale jest to konkretny scenariusz, którego większość ludzi nie pozna / nie zrealizuje / nie będzie potrzebować.
Synetech,
2
Jeśli masz dwie aplikacje jednowątkowe, system Windows uruchomi każdą z innym wątkiem / rdzeniem i uzyskasz 100% wykorzystania procesora bez ustawiania powinowactwa. Aby przetestować, uruchomiłem 4 instancje jednego wątkowego programu na moim 4-rdzeniowym komputerze i uzyskałem 100% użycia procesora. Windows jest wystarczająco inteligentny, aby efektywnie planować procesory.
shf301,
Myślę, że to zależy od systemu i / lub wersji Windows. Widziałem, jak (XP) unosi oba rdzenie na poziomie 50-75%, gdy oba procesy zostały ustawione na oba rdzenie i ręcznie ustawia je na maksimum procesora.
Synetech,
@Synetech: To wydaje się prawie niemożliwe. Musiałoby to być przenoszenie tych dwóch procesów z rdzenia na rdzeń, zawsze oba jednocześnie.
David Schwartz
Kolejny ważny przypadek użycia tego: istnieją aplikacje, które mogą wykorzystywać wszystkie dostępne procesory i mogą uniemożliwić poprawne działanie innych programów i / lub spowolnić reakcję systemu operacyjnego na dane wprowadzone przez użytkownika. W takim przypadku ktoś może postanowić ograniczyć taką aplikację tylko do niektórych procesorów. Jako programista często używam tej funkcji podczas profilowania aplikacji intensywnie wykorzystujących procesor, ponieważ samo profilowanie wymaga procesora.
Eyal Roth,
2

Ustawienie powinowactwa mówi temu procesowi, na jakich procesorach może on działać.

Chociaż jest to bardzo przydatne w niektórych niszowych przypadkach, przeciętny użytkownik prawdopodobnie nie powinien z tym zadzierać.

Na przykład, jeśli procesowi pozwoliłby uruchomić swój własny rdzeń, mógłby on działać w czasie (bliskim) w czasie rzeczywistym bez tych 70 narzędzi systemu Windows stale przerywających procesor i wymieniających stosy na procesorze dla własnego przedziału czasu. Aplikacje działające w czasie rzeczywistym były czymś, czego system Windows nigdy nie mógł zrobić, zanim systemy wieloprocesorowe / wielordzeniowe nie pojawią się na scenie, ponieważ system operacyjny nieustannie zakłóca / przełącza zadania na własne potrzeby. Można to teraz w większości rozwiązać przez odizolowanie jednego procesora aplikacji w czasie rzeczywistym, jednocześnie uniemożliwiając korzystanie z tego procesora przez wszystkie inne aplikacje w systemie. Jest to bardzo niszowy temat, ale systemy takie jak (rzeczywiste) symulatory lotu, automatyzacja fabryki i systemy sterowania zwrotnego zależą od architektury działającej w czasie rzeczywistym.

Aplikacje intensywnie korzystające z procesorów (takie jak maszyny wirtualne) można odizolować od własnych rdzeni, aby można było z nich korzystać bez przeszukiwania reszty systemu. Teoretycznie hiperwizor działający na procesorze, który obsługuje interakcję bez nadzoru metalu, może osiągnąć wydajność procesora równą niezależnemu systemowi operacyjnemu działającemu samodzielnie (bez procesora wymaganego do uruchomienia systemu operacyjnego hosta). Oczywiście w praktyce nawet maszyna wirtualna działająca na własnym izolowanym rdzeniu / procesorze nadal będzie musiała zaakceptować niewielki narzut z hosta systemu operacyjnego hosta.

W przypadku aplikacji, które przetwarzają dużą ilość przepływających danych, izolacja aplikacji do własnego procesora (i potencjalnie nadal wykorzystująca wiele rdzeni) ograniczy wymianę pamięci podręcznej.

Starsze aplikacje, które psują się, gdy są rozproszone na wielu procesorach, można skutecznie ograniczyć do jednego rdzenia / procesora, aby rozwiązać problem.

Jeśli wykonujesz pomiary wydajności dla konkretnej aplikacji, prawie niemożliwe jest uzyskanie spójnych wyników w różnych systemach, chyba że możesz odizolować proces, ponieważ w przeciwnym razie nie masz kontroli nad tym, ile czasu system operacyjny daje aplikacji. Większość ludzi zgadza się, że pomiar wydajności środowiska wykonawczego nie daje dobrych wyników, ale ci ludzie nigdy nie brali pod uwagę, że interwencja systemu operacyjnego (która powoduje, że wyniki są tak niespójne) może być ograniczona za pomocą powinowactwa.

Istnieje wiele przypadków, w których powinowactwo jest niezbędne, ale jeśli nie wiesz, czym one są, prawdopodobnie nie będziesz go potrzebować.

Evan Plaice
źródło
Rzeczą, która sprawia, że ​​powinowactwo jest o wiele mniej przydatne, niż wielu uważa, że ​​powinno być, jest to: ustawienie powinowactwa procesu do pewnego podzbioru dostępnych procesorów. nie zamyka niczego innego z tych procesorów. Aby to zrobić, musisz przejść do wszystkich innych procesów w systemie, aby trzymać je z dala od procesora, który chcesz mieć dla siebie. To prawie nigdy nie jest praktyczne.
Jamie Hanrahan,
Jest to możliwe przy użyciu oprogramowania innych firm . Dlaczego MS nie zawiera tej funkcji domyślnie, jest poza mną.
Evan Plaice,
Ponieważ, jak napisałem, nie jest to aż tak przydatne. I jest bardzo podatny na niewłaściwe użycie. W rzeczywistości zwykły skutek bycia zbyt „kreatywnym” z powinowactwem polega na tym, że rzeczy nie działają, gdy mogłyby być inaczej. Zazwyczaj lepiej jest uruchomić wątek na innym niż ten, który Twoim zdaniem jest preferowanym procesorem, niż wcale (po głupim ustawieniu powinowactwa, aby odmówić mu dostępu do procesorów, które w przeciwnym razie byłyby bezczynne). Domyślny mechanizm „idealnego procesora” i „poprzedni procesor” systemu Windows zapewnia dobrą spójność pamięci podręcznej bez takiego tępego instrumentu maski koligacji.
Jamie Hanrahan,
2

Jest to bardzo przydatna funkcja w niektórych scenariuszach. Załóżmy, że masz aplikację wielowątkową, która zwykle jest bezczynna lub agresywnie chwyta 100% każdego procesora przez kilka minut, wyszukuje, buduje itp. Nazwijmy tę aplikację „zaćmieniem”.

Powiedzmy również, że pracując nad tą aplikacją, masz wiele innych aplikacji, które mają skromne wymagania dotyczące procesora, ale są to aplikacje w czasie rzeczywistym. Na przykład podczas korzystania z Eclipse i losowego uruchamiania kompilacji lub kompilacji gwt, używasz również komputera do strumieniowego przesyłania muzyki lub przeprowadzania badań w oknie przeglądarki (na przykład, szukając przyczyny problemu z kompilacją) . Jasne, nie umrzesz, jeśli Twoja muzyka przeskoczy lub przeglądarka przestanie odpowiadać, ale to denerwujące.

To, co pozwala ci na to, polega na ograniczeniu aplikacji do jedzenia procesora do 7/8 rdzeni, aby wszyscy mieli zagwarantowany dostęp do stosunkowo nieużywanego procesora i nie musieliście stale radzić sobie z jąkaniem się i zakłócaniem użyteczności wszystkiego na twoim komputerze podczas zaćmienia.

Jim W.
źródło
Lepiej byłoby w tym przypadku po prostu ustawić proces wieprzowego procesora na niski priorytet.
Jamie Hanrahan,
1

Wyższy priorytet oznacza, że ​​przetwarzanie zadania będzie korzystniejsze niż zadania o niskim priorytecie. Jeśli korzystasz z aplikacji wymagającej szybkiego reagowania, a na przykład jest wiele innych nieinteraktywnych procesów, priorytety mogą zapewnić lepszą obsługę procesu o wysokim priorytecie.

Na przykład: od Windows Vista Windows Media Player automatycznie otrzymuje wyższy priorytet, aby zapewnić płynne i ciągłe odtwarzanie plików multimedialnych, przy czym tylko około 20% czasu procesora jest domyślnie dostępne dla innych procesów. To tylko przykład, który pomoże ci zrozumieć, jakie są priorytety. (Możesz przeczytać więcej o priorytetach Media Player w Vista w Technet .)

Miękkie lub twarde powinowactwo może zwiększyć szybkość przetwarzania, ponieważ pamięć podręczna procesora może nadal zawierać resztki procesu, gdy proces został wcześniej przerwany, a następnie wznowiony w późniejszym czasie.

David M.
źródło
Słodkie dzięki! Więc jaki jest dobry przewodnik na temat korzystania z koligacji?
James Mertz
Dobry przewodnik po używaniu powinowactwa: „Nie”.
Jamie Hanrahan,
„Tylko 20% czasu procesora dostępnego dla innych procesów” nie jest dokładnym opisem. Rzeczywista implementacja polega na tym, że wątek, który decyduje się na harmonogram klasy multimedialnej, może działać do 80% każdego interwału planowania w klasie priorytetów w czasie rzeczywistym. To niekoniecznie musi zużywać tyle, a jeśli nie. ponad 20% będzie dostępnych dla innych wątków.
Jamie Hanrahan,
1

Doskonałym tego przykładem są stare gry komputerowe (lub inne oprogramowanie), zwłaszcza gdy gry 32-bitowe (aplikacje) są emulowane na nowoczesnym komputerze 64-bitowym. Ustawiając powinowactwo do starych gier ograniczając je tylko do czterech rdzeni, CZĘSTO można uniknąć awarii, aby umożliwić uruchomienie gier typu stubburn. Niektóre silniki renderujące używane w grach OLD, edytorach wideo i oprogramowaniu graficznym przyspieszanym sprzętowo lub oprogramowaniu CAD nie rozumieją więcej niż czterech rdzeni procesora i ulegają awarii podczas uruchamiania.

Nie tworzę konta tylko po to, żeby to opublikować, aby znaleźć mnie w Google „kieseyhow”

Kieseyhow
źródło