Správa priorít procesu v systéme Windows

Poďme sa rozprávať Priority procesu Windows. Vo väčšine prípadov nie je potrebné „hrať“ s určovaním priorít, ale niekedy môže príslušný správca systému pomôcť systému presnejšie rozdeliť čas procesora medzi vykonávané úlohy. Neexistuje jediný recept, ale prostredníctvom „výberu a vymenovania“ je to celkom možné. Kde je to potrebné? Napríklad v skupine 1C-SQL môžete dať viac času procesora 1C a SQL, pretože zdroje sú najdôležitejšie procesy.

Vo všeobecnosti môžete pomocou nástroja Správca úloh zobraziť a zmeniť prioritu bežiaceho procesu

windows NT / 2000 /7/ 2008

V systéme Windows 2012 je to „hlbšie“ pochované

Ako vidíte z vyššie uvedených príkladov, máte k dispozícii iba 6 priorít (ako sa neskôr ukáže) prioritné triedy). Dosť? Microsoft si myslí, že áno. Pripomeňme si však „legendárnu“ vetu Billa Geista, ktorá hovorí, že „všetkým bude stačiť 640 kB pamäte RAM.“ Ale čas ukázal, že to nie je ani zďaleka pravda :) :)

Teraz sa pozrime, aké to je.

V systéme Windows je v skutočnosti 32 úrovní priority od 0 do 31.

Sú zoskupené takto:

  • 31 - 16 úrovne v reálnom čase;
  • 15 - 1 dynamické úrovne;
  • 0 - systémová úroveň vyhradená pre vlákno s nulovou stranou.

Pri vytváraní procesu je priradený jeden zo šiestich prioritné triedy:

  1. Trieda v reálnom čase (hodnota 24),
  2. Vysoká trieda (hodnota 13),
  3. Nad normálnou triedou (hodnota 10),
  4. Normálna trieda (hodnota 8),
  5. Pod normálnou triedou (hodnota 6),
  6. alebo nečinná trieda (hodnota 4).

Pomocou Správcu úloh môžete vidieť prioritu procesu..

poznámka: Priority Nad normálne a pod normálne sa objavili od systému Windows 2000.

Priorita každého vlákna (základná priorita vlákna) pozostáva z priority procesu a relatívna priorita samotný tok. Existuje sedem relatívnych prioritných nití:

  1. Normálne: rovnaké ako proces;
  2. Nad normálne: +1 na spracovanie priority;
  3. Pod normálne: -1;
  4. Najvyššia: +2;
  5. Najnižšia: -2;
  6. Časovo kritický: nastaví základnú prioritu toku pre triedu Real Time na 31, pre ostatné triedy na 15.
  7. Idle: nastaví základnú prioritu toku pre triedu Real time na 16, pre ostatné triedy 1.

Nasledujúca tabuľka zobrazuje priority procesu, relatívne a základné priority vlákna..

Priorita tokuTrieda procesuTrieda procesu
Nečinná triedaPod normálnou triedouNormálna triedaNad normálnou triedouVysoká triedaTrieda v reálnom čase
1nečinnýnečinnýnečinnýnečinnýnečinný
2najnižšia
3Nižšie ...
4Nečinná trieda normálnenajnižšia
5Nad ... Nižšie ...
6Pod normálnou triedou najvyššiunormálnenajnižšia
7Nad ... Nižšie ...
8Normálna trieda najvyššiunormálnenajnižšia
9Nad ... Nižšie ...
10Nad normálnou triedou najvyššiunormálne
11Nad ... najnižšia
12najvyššiuNižšie ...
13Vysoká trieda normálne
14Nad ...
15najvyššiu
15Časovo kritickýČasovo kritickýČasovo kritickýČasovo kritickýČasovo kritický
16nečinný
17
18
19
20
21
22najnižšia
23Nižšie ...
24Trieda v reálnom čase normálne
25Nad ...
26najvyššiu
27
28
29
30
31Časovo kritický

Teraz, keď sme sa všetci naučili, čo s tým môžeme urobiť? Napríklad, začnite používať.

Ako inak môžete proces začať s „neštandardnou“ prioritou alebo zmenou?

Metóda 1. Spustite úlohu / proces a zmeňte prioritu pomocou Správcu úloh.

Nevýhody metódy:

  • K dispozícii je iba 6 priorít
  • Prioritné prepínanie sa vykonáva pomocou myši, nie je automatizované.

Metóda 2. Príkaz START môžete použiť s príslušnými klávesami

Dostupné prioritné kľúče sú nasledujúce (zámerne vynechávam možnosti príkazového riadku príkazu START nesúvisí s opísaným procesom práce s prioritami):

C: \> štart /?
Spustí samostatné okno na spustenie zadaného programu alebo príkazu.
START ["title"] [/ D path] [/ I] [/ MIN] [/ MAX] [/ SEPARATE | / ZDIEĽANÉ]
[/ LOW | NORMÁLNE / VYSOKÉ | REALTIME ABOVENORMAL / BELOWNORMAL]
[/ NODE] [/ AFFINITY] [/ WAIT] [/ B]
[príkaz / program] [parametre]
LOW       Spustite aplikáciu v triede priority IDLE.
NORMAL     Spustite aplikáciu v triede priority NORMAL.
HIGH       Spustite aplikáciu v triede s vysokou prioritou.
REALTIME   Spustite aplikáciu v triede priority REALTIME.
ABOVENORMAL Spustite aplikáciu v triede priority ABOVENORMAL.
BELOWNORMAL Spustite aplikáciu v triede priority BELOWNORMAL.

Ako vidíte, príkaz START umožňuje spustiť proces s rovnakými 6 prioritami, ktoré sú k dispozícii prostredníctvom Správcu úloh

Metóda mínus:

  • K dispozícii je iba 6 priorít

Metóda 3. Použitie pomôcky wmic.exe

Ako je uvedené vyššie, Správca úloh a príkaz ŠTART sú dosť neohrabané na to, aby sa dali prioritám úlohy. Pozrime sa, ako ju flexibilnejšie uplatniť. Použijeme tento nástroj Wmic.exe.

Príkazový riadok:

wmic process where name = "AppName" CALL setpriority ProcessIDLevel

Príklad:

wmic process where name = "calc.exe" CALL setpriority 32768

alebo

wmic process where name = "calc.exe" CALL setpriority "nad normálne"

Priority (preddefinované):

  • nečinný: 64
  • pod normálne: 16384
  • normálne: 32
  • nad normálne: 32768
  • vysoká priorita: 128
  • v reálnom čase: 256
ustúpiť. Čo ak existuje niekoľko procesov s rovnakým menom? Priorita procesu sa dá zmeniť podľa názvu procesu a pomocou PID (Process ID) procesu.

Tu je krátky príklad spustenia programu wmic.exe na získanie potrebných informácií

Používame príkaz:

wmic zoznam procesov krátky

poznámka: Nebudem uviesť príklad vykonávania tohto príkazu. Získa sa príliš veľký zoznam procesov. Urobte to sami, ak chcete.

Dostanete zoznam procesov bežiacich na lokálnom počítači. Teraz spustite príkaz:

wmic zoznam procesov krátky | nájsť "cmd.exe"

výsledky:

Špeciálne bolo spustených niekoľko kópií cmd.exe, aby bola ilustrácia úplnejšia.

Zoznam procesov je teraz obmedzený iba na procesy v mene spustiteľného modulu, ktorého riadok je cmd.exe. Venujte pozornosť PID procesov (procesov).

Teraz sa pokúsime vybrať procesy, ktoré nás zaujímajú, pomocou priameho rozhrania WMI a bez použitia štandardných nástrojov príkazového riadku. Ak to chcete urobiť, jednoducho napíšte:

wmic process where description = "cmd.exe" zoznam krátky

výsledky:

Porovnať výsledky. Nezabudnite na PID procesu CMD.EXE.

Príkazový riadok na spustenie programu wmic.exe

wmic process where processid = "XXXX" CALL setpriority ProcessIDLevel

Teraz môžeme zmeniť prioritu konkrétneho procesu (napríklad s PID = 8476):

wmic process where processid = "8476" CALL setpriority 32768

alebo

wmic process where processid = "8476" CALL setpriority "nad normálne"

Čo bude ďalej? Odhadnite, vyskúšajte, vyberte a jemne upravte priority. Zlepšenie práce služieb a procesov, ako aj práce koncových užívateľov.