Да поговорим Приоритети за обработка на Windows. В повечето случаи не е необходимо да „играете“ с задаване на приоритети, но понякога компетентен системен администратор може да помогне на системата по-правилно да разпредели времето на процесора между изпълняваните задачи. Няма единна рецепта, но чрез "подбор и изброяване" това е напълно възможно. Къде това може да се наложи? Например, в куп от 1C-SQL можете да дадете повече време за процесор 1C и SQL, като най-критичните процеси към ресурсите.
Като цяло можете да преглеждате и променяте приоритета на стартиран процес чрез диспечера на задачите
Windows NT / 2000 /7/ 2008г
В Windows 2012 тя е „погребана” малко по-дълбоко
Както можете да видите от горните примери, само 6 приоритета са на разположение за вас (както се оказва по-късно, това приоритетни класове). Достатъчно? Microsoft смята, че да. Но нека си припомним „легендарната“ фраза на Бил Гейст, която казваше, че „640 KB оперативна памет ще бъде достатъчна за всички.“ Но времето показа, че това далеч не е така. :)
Сега да видим как е всъщност.
Всъщност в Windows има 32 нива на приоритет, от 0 до 31.
Те са групирани така:
- 31 - 16 нива в реално време;
- 15 - 1 динамични нива;
- 0 - системно ниво, запазено за темата с нулева страница.
Когато създавате процес, му се назначава едно от шест приоритетни класове:
- Клас в реално време (стойност 24),
- Висок клас (стойност 13),
- Над нормалния клас (стойност 10),
- Нормален клас (стойност 8),
- Под нормален клас (стойност 6),
- или празен клас (стойност 4).
Можете да видите приоритета на даден процес, като използвате диспечера на задачите..
забележка: Приоритети над нормалното и под нормалното се появяват след Windows 2000.Приоритет на всяка нишка (основен приоритет на нишката) се състои от приоритета на неговия процес и относителен приоритет самия поток. Има седем относителни приоритета на нишката:
- Нормално: същото като процеса;
- Над нормалното: +1 за обработка на приоритет;
- Под нормално: -1;
- Най-висок: +2;
- Най-ниски: -2;
- Критично време: задава основния приоритет на потока за реално време клас на 31, за други класове до 15.
- Idle: задава основния приоритет на потока за клас реално време на 16, за други класове - на 1.
Следващата таблица показва приоритетите на процеса, относителните и основните приоритети на нишката..
Приоритет на потока | Процесен клас | Процесен клас | |||||
Клас на празен ход | Под нормален клас | Нормален клас | Над нормалния клас | Висок клас | Клас в реално време | ||
1 | празен | празен | празен | празен | празен | ||
2 | Най-ниска | ||||||
3 | По-долу ... | ||||||
4 | Клас на празен ход | нормален | Най-ниска | ||||
5 | По-горе ... | По-долу ... | |||||
6 | Под нормален клас | Най-висока | нормален | Най-ниска | |||
7 | По-горе ... | По-долу ... | |||||
8 | Нормален клас | Най-висока | нормален | Най-ниска | |||
9 | По-горе ... | По-долу ... | |||||
10 | Над нормалния клас | Най-висока | нормален | ||||
11 | По-горе ... | Най-ниска | |||||
12 | Най-висока | По-долу ... | |||||
13 | Висок клас | нормален | |||||
14 | По-горе ... | ||||||
15 | Най-висока | ||||||
15 | Критично време | Критично време | Критично време | Критично време | Критично време | ||
16 | празен | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | Най-ниска | ||||||
23 | По-долу ... | ||||||
24 | Клас в реално време | нормален | |||||
25 | По-горе ... | ||||||
26 | Най-висока | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | Критично време |
Сега, когато всички сме научили това, какво можем да направим за всичко това? Е, например, започнете да използвате.
Как иначе можете да започнете процеса с "нестандартен" приоритет или промяна?
Метод 1. Изпълнете задачата / процеса и променете приоритета чрез диспечера на задачите.
Минуси на метода:
- Налични са само 6 приоритета
- Приоритетното превключване се извършва с мишката, не е автоматизирано.
Метод 2. Можете да използвате командата START със съответните клавиши
Наличните ключове за приоритет са следните (умишлено пропускам опциите на командния ред на командата START не са свързани с описания процес на работа с приоритети):
C: \> старт /?
Стартира отделен прозорец за стартиране на определена програма или команда.
START ["заглавие"] [/ D path] [/ I] [/ MIN] [/ MAX] [/ SEPARATE | / СПОДЕЛЕНО]
[/ LOW | / НОРМАЛЕН | / ВИСОКО | / РЕАЛТИМ | / ABOVENORMAL | / ПОСЛЕДНО]
[/ NODE] [/ AFFINITY] [/ ПОЧАКАЙТЕ] [/ B]
[команда / програма] [параметри]
LOW Стартирайте приложението в клас приоритети IDLE.
NORMAL Стартирайте приложението в NORMAL приоритетния клас.
HIGH Стартирайте приложението в HIGH приоритетния клас.
РЕАЛНО ВРЕМЕ Стартирайте приложението в приоритетния клас REALTIME.
ABOVENORMAL Стартирайте приложението в приоритетния клас ABOVENORMAL.
BELOWNORMAL Стартирайте приложението в приоритетния клас BELOWNORMAL.
Както можете да видите, командата START дава възможност да стартирате процеса със същите 6 приоритета, които са достъпни чрез диспечера на задачите
Метод минус:
- Налични са само 6 приоритета
Метод 3. Използване на помощната програма wmic.exe
Както е показано по-горе, диспечерът на задачите и командата START са достатъчно тромави за задачата за приоритизиране. Нека да видим как да го приложим по-гъвкаво. Ще използваме полезността wmic.exe.
Команден ред:
wmic процес, където name = "AppName" CALL setpriority ProcessIDLevel
Пример:
wmic процес, където name = "calc.exe" CALL setpriority 32768
или
wmic процес, където name = "calc.exe" CALL setpriority "над нормалното"
Приоритети (предварително дефинирани):
- празен ход: 64
- под нормата: 16384
- нормално: 32
- над нормата: 32768
- висок приоритет: 128
- реално време: 256
Ето кратък пример за стартиране на wmic.exe, за да получите необходимата информация
Използваме командата:
списък на wmic процес кратък
Ще получите списък на процесите, работещи на вашия локален компютър. Сега изпълнете командата:
списък на wmic процес кратък | намери "cmd.exe"
резултат:
Специално пуснаха няколко копия на cmd.exe, така че илюстрацията да е по-пълна.
Сега списъкът на процесите е ограничен само до онези процеси, в името на изпълнимия модул от които има ред "cmd.exe". Обърнете внимание на PID на процеса (ите).
Сега нека се опитаме да подберем процесите, които ни интересуват, като използваме директно WMI и без да прибягваме до стандартни инструменти за команден ред. За да направите това, просто напишете:
wmic процес, където description = "cmd.exe" списък кратък
резултат:
Сравнете резултатите. Запомнете PID на процеса CMD.EXE.
Команден ред за стартиране на wmic.exe
wmic процес, където processid = "XXXX" CALL setpriority ProcessIDLevel
Е, сега можем да променим приоритета на конкретен процес (например с PID = 8476):
wmic процес, където processid = "8476" CALL setpriority 32768
или
wmic процес, при който processid = "8476" CALL setpriority "над нормалното"
Какво следва? Преценете, опитайте, изберете и фино коригирайте приоритетите. Подобряване работата на услугите и процесите, както и работата на крайните потребители.