Porozmawiajmy Priorytety procesu Windows. W większości przypadków nie trzeba „bawić się” ustawianiem priorytetów, ale czasami kompetentny administrator systemu może pomóc systemowi w lepszym rozłożeniu czasu procesora między uruchomionymi zadaniami. Nie ma jednego przepisu, ale poprzez „selekcję i wyliczenie” jest to całkiem wykonalne. Gdzie to może być potrzebne? Na przykład w pakiecie 1C-SQL możesz wydłużyć czas procesora 1C i SQL, jako najbardziej krytyczne procesy dla zasobów.
Zasadniczo za pomocą Menedżera zadań można przeglądać i zmieniać priorytet uruchomionego procesu
Windows NT / 2000 /7/ 2008
W systemie Windows 2012 jest „zakopany” nieco głębiej
Jak widać z powyższych przykładów, dostępnych jest tylko 6 priorytetów (jak się później okaże) klasy priorytetowe) Dosyć? Microsoft uważa, że tak. Ale przypomnijmy sobie „legendarne” zdanie Billa Geista, które mówiło, że „640 KB pamięci RAM wystarczy dla wszystkich.” Ale czas pokazał, że tak nie jest. :)
Zobaczmy teraz, jak to naprawdę jest.
W systemie Windows istnieją 32 poziomy priorytetów, od 0 do 31.
Są one pogrupowane w następujący sposób:
- 31–16 poziomy czasu rzeczywistego;
- 15 - 1 poziomy dynamiczne;
- 0 - poziom systemu zarezerwowany dla wątku zerowej strony.
Podczas tworzenia procesu jest on przypisywany do jednego z sześciu klasy priorytetowe:
- Klasa czasu rzeczywistego (wartość 24),
- Wysoka klasa (wartość 13),
- Powyżej normalnej klasy (wartość 10),
- Klasa normalna (wartość 8),
- Poniżej normalnej klasy (wartość 6),
- lub klasa bezczynności (wartość 4).
Możesz zobaczyć priorytet procesu za pomocą Menedżera zadań..
Uwaga: Priorytety Powyżej normalnej i Poniżej normalnej pojawiły się od Windows 2000.Priorytet każdego wątku (podstawowy priorytet wątku) składa się z priorytetu procesu i względny priorytet sam przepływ. Istnieje siedem względnych priorytetów wątków:
- Normalny: taki sam jak proces;
- Powyżej normalnego: +1 do priorytetu przetwarzania;
- Poniżej normy: -1;
- Najwyższy: +2;
- Najniższy: -2;
- Krytyczny czasowo: ustawia podstawowy priorytet strumienia dla klasy czasu rzeczywistego na 31, dla innych klas na 15.
- Bezczynność: ustawia podstawowy priorytet strumienia dla klasy czasu rzeczywistego na 16, dla pozostałych klas na 1.
Poniższa tabela pokazuje priorytety procesu, względne i podstawowe priorytety wątków..
Priorytet przepływu | Klasa procesu | Klasa procesu | |||||
Bezczynna klasa | Poniżej normalnej klasy | Normalna klasa | Powyżej normalnej klasy | Wysoka klasa | Klasa czasu rzeczywistego | ||
1 | Bezczynnie | Bezczynnie | Bezczynnie | Bezczynnie | Bezczynnie | ||
2) | Najniższy | ||||||
3) | Poniżej ... | ||||||
4 | Bezczynna klasa | Normalne | Najniższy | ||||
5 | Powyżej ... | Poniżej ... | |||||
6 | Poniżej normalnej klasy | Najwyższy | Normalne | Najniższy | |||
7 | Powyżej ... | Poniżej ... | |||||
8 | Normalna klasa | Najwyższy | Normalne | Najniższy | |||
9 | Powyżej ... | Poniżej ... | |||||
10 | Powyżej normalnej klasy | Najwyższy | Normalne | ||||
11 | Powyżej ... | Najniższy | |||||
12 | Najwyższy | Poniżej ... | |||||
13 | Wysoka klasa | Normalne | |||||
14 | Powyżej ... | ||||||
15 | Najwyższy | ||||||
15 | Czas krytyczny | Czas krytyczny | Czas krytyczny | Czas krytyczny | Czas krytyczny | ||
16 | Bezczynnie | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | Najniższy | ||||||
23 | Poniżej ... | ||||||
24 | Klasa czasu rzeczywistego | Normalne | |||||
25 | Powyżej ... | ||||||
26 | Najwyższy | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | Czas krytyczny |
Teraz, kiedy wszyscy się tego nauczyliśmy, co możemy z tym wszystkim zrobić? Na przykład zacznij używać.
Jak inaczej możesz rozpocząć proces z „niestandardowym” priorytetem lub zmianą?
Metoda 1. Uruchom zadanie / proces i zmień priorytet za pomocą Menedżera zadań.
Wady metody:
- Dostępne tylko 6 priorytetów
- Priorytetowe przełączanie odbywa się za pomocą myszy; nie jest zautomatyzowane.
Metoda 2. Możesz użyć polecenia START z odpowiednimi klawiszami
Dostępne klucze priorytetów są następujące (celowo pomijam opcje wiersza polecenia) START niezwiązane z opisanym procesem pracy z priorytetami):
C: \> start /?
Uruchamia osobne okno, aby uruchomić określony program lub polecenie.
START [„tytuł”] [/ D ścieżka] [/ I] [/ MIN] [/ MAX] [/ SEPARATE | / DZIELONE]
[/ LOW | / NORMAL | / HIGH | / W CZASIE RZECZYWISTYM | / ABOVENORMAL | / BELOWNORMAL]
[/ NODE] [/ AFFINITY] [/ WAIT] [/ B]
[polecenie / program] [parametry]
Niski Uruchom aplikację w klasie priorytetu IDLE.
Normalne Uruchom aplikację w klasie priorytetu NORMAL.
Wysoki Rozpocznij aplikację w klasie WYSOKIEGO priorytetu.
W CZASIE RZECZYWISTYM Rozpocznij aplikację w klasie priorytetu REALTIME.
ABOVENORMAL Rozpocznij aplikację w klasie priorytetowej ABOVENORMAL.
BELOWNORMAL Rozpocznij aplikację w klasie priorytetowej BELOWNORMAL.
Jak widać, polecenie START umożliwia rozpoczęcie procesu z tymi samymi 6 priorytetami, które są dostępne za pośrednictwem Menedżera zadań
Metoda minus:
- Dostępne tylko 6 priorytetów
Metoda 3. Korzystanie z narzędzia wmic.exe
Jak pokazano powyżej, Menedżer zadań i polecenie START są wystarczająco niezdarne, aby wykonać zadanie ustalania priorytetów. Zobaczmy, jak zastosować go bardziej elastycznie. Użyjemy narzędzia wmic.exe.
Wiersz poleceń:
wmic process where name = "AppName" CALL setpriority ProcessIDLevel
Przykład:
proces wmic gdzie name = "calc.exe" CALL setpriority 32768
lub
proces wmic gdzie name = "calc.exe" CALL setpriority "powyżej normy"
Priorytety (predefiniowane):
- stan bezczynności: 64
- poniżej normy: 16384
- normalna: 32
- powyżej normy: 32768
- wysoki priorytet: 128
- w czasie rzeczywistym: 256
Oto krótki przykład uruchamiania wmic.exe w celu uzyskania niezbędnych informacji
Używamy polecenia:
krótka lista procesów wmic
Otrzymasz listę procesów uruchomionych na twoim komputerze lokalnym. Teraz uruchom polecenie:
krótka lista procesów wmic znajdź „cmd.exe”
Wynik:
Specjalnie uruchomiono kilka kopii programu cmd.exe, aby ilustracja była bardziej kompletna.
Teraz lista procesów jest ograniczona tylko do tych procesów, których nazwa to moduł wykonywalny, w którym znajduje się wiersz „cmd.exe”. Zwróć uwagę na PID procesu (procesów).
Teraz spróbujmy wybrać interesujące nas procesy, używając bezpośrednio WMI i bez uciekania się do standardowych narzędzi wiersza poleceń. Aby to zrobić, po prostu napisz:
wmic process where description = "cmd.exe" lista skrótów
Wynik:
Porównaj wyniki. Zapamiętaj PID procesu CMD.EXE.
Wiersz polecenia, aby uruchomić wmic.exe
proces wmic gdzie processid = "XXXX" CALL setpriority ProcessIDLevel
Teraz możemy zmienić priorytet określonego procesu (na przykład PID = 8476):
proces wmic gdzie processid = "8476" CALL setpriority 32768
lub
proces wmic gdzie processid = "8476" CALL setpriority "powyżej normy"
Co dalej Oszacuj, spróbuj, wybierz i precyzyjnie dostosuj priorytety. Poprawa pracy usług i procesów, a także pracy użytkowników końcowych.