Upravljanje prioritetima procesa u sustavu Windows

Razgovarajmo Prioriteti sustava Windows. U većini slučajeva nema potrebe da se "igrate" s postavljanjem prioriteta, ali ponekad kompetentni administrator sustava može pomoći sustavu da ispravnije rasporedi vrijeme procesora između izvršenih zadataka. Nema jedinstvenog recepta, ali kroz "odabir i nabrajanje" to je sasvim izvedivo. Gdje je to potrebno? Na primjer, u hrpi 1C-SQL-a možete dati više vremena procesora 1C i SQL, kao najkritičnijim procesima za resurse.

Općenito, možete pregledati i promijeniti prioritet pokrenutog procesa putem Upravitelja zadataka

Windows NT / 2000 /7/ 2008

U sustavu Windows 2012 to je "pokopano" malo dublje

Kao što vidite iz gornjih primjera, dostupno vam je samo 6 prioriteta (kako se kasnije ispostavilo, ovo je) prioritetne klase). Dovoljno? Microsoft misli da. Ali sjetimo se "legendarne" fraze Billa Geista koja je govorila da će "640 KB RAM-a biti dovoljno za sve." Ali vrijeme je pokazalo da je to daleko od slučaja. :)

A sada da vidimo kako je to zapravo.

Zapravo, u sustavu Windows postoje 32 razine prioriteta, od 0 do 31.

Grupirani su ovako:

  • 31 - 16 razine u stvarnom vremenu;
  • 15 - 1 dinamičke razine;
  • 0 - sistemska razina rezervirana za nit nulte stranice.

Prilikom stvaranja postupka dodjeljuje se jedan od šest prioritetne klase:

  1. Klasa u stvarnom vremenu (vrijednost 24),
  2. Visoka klasa (vrijednost 13),
  3. Iznad normalne klase (vrijednost 10),
  4. Normalna klasa (vrijednost 8),
  5. Ispod normalne klase (vrijednost 6),
  6. ili neaktivna klasa (vrijednost 4).

Možete vidjeti prioritet postupka pomoću Upravitelja zadataka..

primjedba: Prioriteti iznad normalnog i ispod normalnog pojavljuju se od Windows 2000.

Prioritet svake niti (osnovni prioritet niti) sastoji se od prioriteta njegovog procesa i relativni prioritet sam tok. Postoji sedam relativnih prioriteta niti:

  1. Normalno: isto kao i postupak;
  2. Iznad normalnog: +1 za obradu prioriteta;
  3. Ispod normalnog: -1;
  4. Najviši: +2;
  5. Najniže: -2;
  6. Vremensko kritično: postavlja osnovni prioritet struje za realnu klasu vremena na 31, za ostale klase na 15.
  7. Idle: postavlja osnovni prioritet toka za realnu klasu vremena na 16, za ostale klase na 1.

Sljedeća tablica prikazuje prioritete procesa, relativne i osnovne prioritete niti..

Prioritet protokaKlasa procesaKlasa procesa
Klasa u praznom hoduIspod normalne klaseNormalna klasaIznad normalne klaseVisoka klasaReal time class
1besposlenbesposlenbesposlenbesposlenbesposlen
2najniža
3Ispod ...
4Klasa u praznom hodu normalannajniža
5Iznad ... Ispod ...
6Ispod normalne klase najvišinormalannajniža
7Iznad ... Ispod ...
8Normalna klasa najvišinormalannajniža
9Iznad ... Ispod ...
10Iznad normalne klase najvišinormalan
11Iznad ... najniža
12najvišiIspod ...
13Visoka klasa normalan
14Iznad ...
15najviši
15Vrijeme je kritičnoVrijeme je kritičnoVrijeme je kritičnoVrijeme je kritičnoVrijeme je kritično
16besposlen
17
18
19
20
21
22najniža
23Ispod ...
24Real time class normalan
25Iznad ...
26najviši
27
28
29
30
31Vrijeme je kritično

Sad kad smo sve ovo naučili, što mi u vezi s tim možemo učiniti? Pa, na primjer, počnite koristiti.

Kako inače možete započeti postupak s "nestandardnim" prioritetom ili promjenom?

Metoda 1. Pokrenite zadatak / postupak i promijenite prioritet putem Upravitelja zadataka.

Protiv metode:

  • Dostupno je samo 6 prioriteta
  • Prebacivanje prioriteta vrši se mišem, nije automatizirano.

Metoda 2. Možete koristiti naredbu START s odgovarajućim tipkama

Dostupni ključevi prioriteta su sljedeći (namjerno izostavljam opcije naredbenog retka naredbe START nije povezano s opisanim postupkom rada s prioritetima):

C: \> start /?
Pokreće zasebni prozor za pokretanje određenog programa ili naredbe.
START ["title"] [/ D path] [/ I] [/ MIN] [/ MAX] [/ SEPARATE | / SHARED]
[/ NISKO | / NORMALNO | / VISOKO | / REALTIME | / ABOVENORMAL | / Ispod]
[/ NODE] [/ AFFINITY] [/ WAIT] [/ B]
[naredba / program] [parametri]
LOW       Pokrenite primjenu u klasi prioriteta IDLE.
NORMALNO     Pokrenite primjenu u NORMAL klasi prioriteta.
HIGH       Započnite primjenu u VISOKOJ prioritetnoj klasi.
Stvarno   Pokrenite primjenu u REALTIME prioritetnoj klasi.
ABOVENORMAL Započnite primjenu u prioritetnoj klasi ABOVENORMAL.
BELOWNORMAL Pokrenite primjenu u BELOWNORMAL prioritetnoj klasi.

Kao što vidite, naredba START omogućuje pokretanje postupka s istim 6 prioriteta koji su dostupni putem Upravitelja zadataka

Minus metoda:

  • Dostupno je samo 6 prioriteta

Metoda 3. Korištenje uslužnog programa wmic.exe

Kao što je gore prikazano, upravitelj zadataka i naredba START dovoljno su nespretni za zadatak davanja prioriteta. Pogledajmo kako fleksibilnije primijeniti. Koristit ćemo uslužni program wmic.exe.

Komandna linija:

wmic proces u kojem name = "AppName" CALL setpriority ProcessIDLevel

Primjer:

wmic proces u kojem name = "calc.exe" CALL setpriority 32768

ili

wmic proces u kojem je name = "calc.exe" CALL setpriority "iznad normalnog"

Prioriteti (unaprijed definirani):

  • mirovanje: 64
  • ispod normalne: 16384
  • normalno: 32
  • iznad normalnog: 32768
  • visoki prioritet: 128
  • realno vrijeme: 256
povući se. Što ako postoji nekoliko procesa istog naziva? Prioritet procesa može se mijenjati i imenom naziva postupka i upotrebom PID-a (ID procesa) procesa.

Evo kratkog primjera pokretanja wmic.exe za dobivanje potrebnih informacija

Koristimo naredbu:

Popis wmic procesa kratak

primjedba: Neću dati primjer izvršenja ove naredbe. Dobiva se prevelik popis procesa. Po želji napravite sami.

Dobit ćete popis procesa koji se pokreću na vašem lokalnom računalu. Sada pokrenite naredbu:

popis wmic procesa kratak | pronađi "cmd.exe"

rezultat:

Posebno je lansirano nekoliko primjeraka cmd.exe, tako da je ilustracija bila potpunija.

Sada je popis procesa ograničen samo na one procese u ime izvršnog modula od kojih postoji redak "cmd.exe". Obratite pažnju na PID postupka.

Sada pokušajmo odabrati procese koji nas zanimaju, koristeći izravno WMI i ne pribjegavajući standardnim alatima naredbenog retka. Da biste to učinili, jednostavno napišite:

wmic postupak gdje je opis = "cmd.exe" popis kratak

rezultat:

Usporedite rezultate. Sjetite se PID procesa CMD.EXE.

Naredbeni redak za pokretanje wmic.exe

wmic proces gdje processid = "XXXX" CALL setpriority ProcessIDLevel

Pa, sada možemo promijeniti prioritet određenog procesa (na primjer, s PID = 8476):

wmic proces gdje processid = "8476" CALL setpriority 32768

ili

wmic proces u kojem je processid = "8476" CALL setpriority "iznad normalnog"

Što slijedi? Procijenite, pokušajte, odaberite i fino prilagodite prioritete. Poboljšanje rada usluga i procesa, kao i rada krajnjih korisnika.