Давайте поговорим о приоритетах Windows процессов . В большинстве случаев «играться» с настройкой приоритетов нет необходимости, но, иногда, грамотный системный администратор может помочь системе более правильно распределить процессорное время между запущенными задачами. Единого рецепта нет, но путем «подбора и перебора» это вполне реализуемо. Где это может понадобиться? Например, в связке 1С-SQL можно дать больше процессорного времени 1С и SQL, как наиболее критичным к ресурсам процессам.
В общем случае, посмотреть и изменить приоритет запущенного процесса можно через Task Manager
Windows NT/2000/ 7 /2008
А теперь давайте разберемся, как это есть на самом деле.
На самом деле в Windows существует 32 уровня приоритета, от 0 до 31.
Они группируются так:
При создании процесса, ему назначается один из шести классов приоритетов :
Посмотреть приоритет процесса, как писалось выше, можно, используя Task Manager.
Приоритет каждого потока ( базовый приоритет потока ) складывается из приоритета его процесса и относительного приоритета самого потока. Есть семь относительных приоритетов потоков:
В следующей таблице показаны приоритеты процесса, относительный и базовый приоритеты потока.
Приоритет потока | Класс процесса | Класс процесса | |||||
Idle class | Below normal class | Normal class | Above normal class | High class | Real time class | ||
1 | Idle | Idle | Idle | Idle | Idle | ||
2 | Lowest | ||||||
3 | Below … | ||||||
4 | Idle class | Normal | Lowest | ||||
5 | Above … | Below … | |||||
6 | Below normal class | Highest | Normal | Lowest | |||
7 | Above … | Below … | |||||
8 | Normal class | Highest | Normal | Lowest | |||
9 | Above … | Below … | |||||
10 | Above normal class | Highest | Normal | ||||
11 | Above … | Lowest | |||||
12 | Highest | Below … | |||||
13 | High class | Normal | |||||
14 | Above … | ||||||
15 | Highest | ||||||
15 | Time critical | Time critical | Time critical | Time critical | Time critical | ||
16 | Idle | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | Lowest | ||||||
23 | Below … | ||||||
24 | Real time class | Normal | |||||
25 | Above … | ||||||
26 | Highest | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | Time critical |
Теперь, когда мы все это узнали, что же с этим всем можно сделать? Ну, например, начать использовать.
Как еще можно запустить процесс с «нестандартным» приоритетом или изменить?
Метод 1. Запустить задачу/процесс и изменить приоритет через Task Manager.
Минусы метода:
Метод 2. Можно воспользоваться командой START с соответствующими ключами
Доступные ключи, отвечающие за приоритеты, следующие (я умышленно опускаю ключи командной строки команды START не имеющие отношения к описываемому процессу работы с приоритетами):
C:>start /?
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
LOW Start application in the IDLE priority class.
NORMAL Start application in the NORMAL priority class.
HIGH Start application in the HIGH priority class.
REALTIME Start application in the REALTIME priority class.
ABOVENORMAL Start application in the ABOVENORMAL priority class.
BELOWNORMAL Start application in the BELOWNORMAL priority class.
Как видим, команда START дает возможность запустить процесс все с теми же 6-ю приоритетами, которые доступны через Task Manager
Минус метода:
Метод 3. Использование утилиты wmic.exe
Как было показано выше, Task Manager, и команда START достаточно неуклюжи для задачи назначения приоритетов. Посмотрим, как это применять более гибко. Будем использовать утилиту wmic.exe .
Командная строка:
wmic process where name="AppName" CALL setpriority ProcessIDLevel
Пример:
wmic process where name="calc.exe" CALL setpriority 32768
или
wmic process where name="calc.exe" CALL setpriority "above normal"
Приоритеты (предопределенные):
Вот короткий пример запуска wmic.exe для получения необходимой информации
Используем команду:
wmic process list brief
Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:
wmic process list brief | find "cmd.exe"
Результат:
Теперь список процессов ограничен только теми процессами, в имени исполняемого модуля которых присутствует строка «cmd.exe». Обратите внимание на PID процесса(ов).
Теперь давайте попробуем отобрать интересующие нас процессы, используя непосредственно WMI и не прибегая к стандартным средствам командной строки. Для этого просто напишите:
wmic process where description='cmd.exe' list brief
Результат:
Командная строка для запуска wmic.exe
wmic process where processid='XXXX' CALL setpriority ProcessIDLevel
Ну а теперь можем изменить приоритет конкретного процесса (например с PID=8476):
wmic process where processid='8476' CALL setpriority 32768
или
wmic process where processid='8476' CALL setpriority "above normal"
А что дальше? Прикидывать, пробовать, подбирать и тонко регулировать приоритеты. Улучшая работу сервисов и процессов, а также работу конечных пользователей.
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…