Давайте поговорим о приоритетах Windows процессов. В большинстве случаев «играться» с настройкой приоритетов нет необходимости, но, иногда, грамотный системный администратор может помочь системе более правильно распределить процессорное время между запущенными задачами. Единого рецепта нет, но путем «подбора и перебора» это вполне реализуемо. Где это может понадобиться? Например, в связке 1С-SQL можно дать больше процессорного времени 1С и SQL, как наиболее критичным к ресурсам процессам.
В общем случае, посмотреть и изменить приоритет запущенного процесса можно через Task Manager Windows NT/2000/7/2008 В Windows 2012 это “закопали» чуть глубже
Как видно из приведенных примеров, вам доступно всего 6 приоритетов (как выяснится позже, это классы приоритетов). Достаточно? Microsoft считает, что да. Но давайте вспомним «легендарную» фразу Билла Гейста, который сказал, что «640 KB of RAM will be enough for everybody”. Но время показало, что это далеко не так. : )
КАК ОПТИМИЗИРОВАТЬ ПРОЦЕССОР ДЛЯ ИГР? КАК ПОВЫСИТЬ ФПС ВО ВСЕХ ИГРАХ!
- 31 — 16 уровни реального времени;
- 15 — 1 динамические уровни;
- 0 — системный уровень, зарезервированный для потока обнуления страниц (zero-page thread).
При создании процесса, ему назначается один из шести классов приоритетов:
- Real time class (значение 24),
- High class (значение 13),
- Above normal class (значение 10),
- Normal class (значение 8),
- Below normal class (значение 6),
- или Idle class (значение 4).
Посмотреть приоритет процесса, как писалось выше, можно, используя Task Manager.
Приоритет каждого потока (базовый приоритет потока) складывается из приоритета его процесса и относительного приоритета самого потока. Есть семь относительных приоритетов потоков:
- Normal : такой же как и у процесса;
- Above normal : +1 к приоритету процесса;
- Below normal : -1;
- Highest : +2;
- Lowest : -2;
- Time critical : устанавливает базовый приоритет потока для Real time класса в 31, для остальных классов в 15.
- Idle : устанавливает базовый приоритет потока для Real time класса в 16, для остальных классов в 1.
В следующей таблице показаны приоритеты процесса, относительный и базовый приоритеты потока.
Приоритет потока | Класс процесса | Класс процесса | |||||
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 |
Теперь, когда мы все это узнали, что же с этим всем можно сделать? Ну, например, начать использовать.
Как задать приоритет процесса Windows 11 и Windows 10
Как еще можно запустить процесс с «нестандартным» приоритетом или изменить?
Метод 1. Запустить задачу/процесс и изменить приоритет через Task Manager.
- Доступно только 6 приоритетов
- Переключение приоритетов производится мышкой, не автоматизируется.
Метод 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 ] [/AFFINITY ] [/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
- Доступно только 6 приоритетов
Метод 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»
- idle: 64
- below normal: 16384
- normal: 32
- above normal: 32768
- high priority: 128
- real time: 256
Вот короткий пример запуска wmic.exe для получения необходимой информации
wmic process list brief
Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:
wmic process list brief | find «cmd.exe»
Специально запустил несколько копий cmd.exe, чтобы иллюстрация была более полной.
Теперь список процессов ограничен только теми процессами, в имени исполняемого модуля которых присутствует строка «cmd.exe». Обратите внимание на PID процесса(ов).
Теперь давайте попробуем отобрать интересующие нас процессы, используя непосредственно WMI и не прибегая к стандартным средствам командной строки. Для этого просто напишите:
wmic process where description=’cmd.exe’ list brief
Сравните полученные результаты. Запомните PID процесса CMD.EXE.
Командная строка для запуска 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»
А что дальше? Прикидывать, пробовать, подбирать и тонко регулировать приоритеты. Улучшая работу сервисов и процессов, а также работу конечных пользователей.
Как изменить приоритет процесса и как его сохранить (высокий, низкий)
Доброго времени!
Первый и самый главный вопрос, с которого следовало бы начать данную статью: зачем вообще менять приоритет и стоит ли это делать.
Представьте, вот вы запускаете тяжелую игру (или редактор видео, или еще что-то. ) далеко на не самом мощном компьютере. Причем, помимо вашей игры в Windows (обычно) запущено достаточно большое количество процессов, приложений. И в определенное время они могут «забирать» часть ресурсов себе — в результате игра время от времени притормаживает.
Смена приоритета процесса же позволяет указать Windows, что запущенная игра — это первоочередная задача, которой нужно выделить все основные ресурсы (а все остальное может подождать. ) . Благодаря заданию приоритетов для самых «главных» для вас программ — можно снизить количество притормаживаний и лагов, ускорить их работу.
Т.е. тема достаточно интересна, и может быть очень полезна как для любителей игр, так и для работы с видео, фото и пр. ресурсоемкими задачами.
Теперь ближе к сути.
Работа с приоритетами.
У каждой запускаемой программы или процесса в Windows есть приоритет. Обычно, ОС Windows «сама знает» кому и что выделять, и делает это автоматически (без участия пользователя). Вообще разнообразие приоритетов не такое уж и большое:
- Idle (низкий) — программы, выполнение которых может и подождать (при выставлении данного приоритета некоторый софт может тормозить) ;
- Below Normal (ниже среднего);
- Normal (средний) — большинство программ запускаются со средним приоритетом;
- Above Normal (выше среднего);
- High (высокий);
- Real Time (реального времени) — самый высокий приоритет. При его выставлении — в первую очередь будет выполняться именно эта программа.
Отмечу, что с приоритетами High и Real Time нужно быть крайне осторожными: в некоторых случаях при выставлении оных — компьютер может зависнуть или Windows завершит работу с ошибкой.
Еще один совет : нет необходимости выставлять приоритет каждой запускаемой программе (с этим Windows хорошо справляется в авто-режиме). Как правило, есть смысл указать приоритет для 2÷5 часто-используемых приложений, которые для вас наиболее важны.
Изменение приоритета
И так, чтобы поменять приоритет работающей программы (процесса) в Windows — необходимо воспользоваться диспетчером задач . Для того, чтобы его вызвать — нажмите сочетание кнопок Ctrl+Shift+Esc (либо Ctrl+Alt+Del).
Для вызова диспетчера задач — нажмите Ctrl+Shift+Esc
Далее откройте вкладку «Подробности» (это для Windows 10, для Windows 7 — «Процессы») и найдите в списке нужный процесс ( прим. : название программы совпадает с названием процесса) .
После, на нужном процессе кликните правой кнопкой мышки: в появившемся меню перейдите во вкладку «Задать приоритет» и укажите нужный вам.
Задание приоритета для запущенного процесса
Собственно, на этом всё! Теперь запущенная программа будет работать с новым приоритетом. При выставлении приоритета реального времени — возможно, компьютер начнет тормозить.
Сохранение приоритета с помощью настроек реестра
После перезагрузки компьютера (или при перезапуске программы) — установленный вами приоритет сбрасывается (т.е. Windows снова задает его автоматически). И это не очень удобно.
Но с помощью настроек реестра можно «сохранить» указанный вами приоритет (т.е. Windows будет «знать», что эту программу нужно запустить с таким-то приоритетом).
-
сначала необходимо открыть редактор реестра (нажмите Win+R , и введите команду regedit , нажмите OK). У кого не открылся редактор, привожу в помощь одну свою старую заметку: https://ocomp.info/sposoby-otkryit-redaktor-reestra.html
regedit — открыть редактор реестра
далее необходимо открыть следующую ветку реестра (можно просто ее скопировать и вставить в редактор): HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
Какую ветку в реестре нужно открыть
затем нужно узнать точное название исполняемого файла программы (игры). Для этого просто щелкните правой кнопкой мышки по ее ярлыку и перейдите в свойства . После, в разделе «Ярлык» — в строке «Объект» скопируйте название исполняемого файла;
Узнаем название исполняемого файла игры / Кликабельно
теперь в открытой ветке реестра создайте раздел (папку) с именем исполняемого файла программы (которое мы узнали в предыдущем шаге) . В моем случае — это «civilization4.exe» (без кавычек и с маленькими буквами!) ;
Создание раздела / Реестр
далее в ветке с названием игры (программы) создайте еще один раздел (папку) и назовите ее «PerfOptions» , см. пример ниже;
последний штрих: в разделе «PerfOptions» создайте параметр DWORD (32), присвойте ему имя » CpuPriorityClass » и задайте значение исходя из требований, в моем случае это «3» ( прим.: 1 — низкий приоритет; 5 — ниже среднего; 8 — средний; 6 — выше среднего; 3 — высокий) .
Создать параметр DWORD32
в конечном итоге получится так, как показано на скрине ниже.
Что получилось в итоге!
Для Windows 7 есть спец. программа Prio, позволяющая задавать (и сохранять) приоритеты для практически любых программ и процессов. Правда, в Windows 10 она не работает (поэтому выше я и привел универсальный рабочий способ для всех современных ОС Windows).
Запуск приложения с нужным приоритетом (через командную строку)
Есть еще один вариант задания приоритета приложению — речь идет о командной строке (разумеется, если создать «BAT» файл — то запуская его, можно всегда иметь программу с нужным приоритетом) .
-
создать на рабочем столе (например) обычный текстовый файл;
Создать текстовый документ
Вставка строки в блокнот и сохранение после чего сохраните текстовый файл, закройте его и переименуйте расширение: с «TXT» на «BAT» (или «CMD»). Если у вас не отображается расширение файла, ознакомьтесь вот с этой заметкой: https://ocomp.info/kak-uvidet-skryityie-faylyi-i-papki.html Изменяем расширение блокнота с TXT на CMD
Дополнения по теме будут весьма кстати.
Источник: onecomp.ru
Как задать или изменить приоритет процесса в Linux?
В некоторых ситуациях может возникнуть необходимость запускать скрипт/программу не со стандартным приоритетом, а с более высоким или низким, либо повысить или понизить приоритет у запущенного ранее процесса. В данной статье мы рассмотрим несколько способов, как можно это с делать.
Что такое приоритет процесса?
Приоритет процесса определяет, как часто именно этот процесс, по сравнению с другими запущенными процессами, стоящими в очереди на выполнение, будет исполняться процессором. В ОС Linux значение приоритета процесса варьируется в диапазоне значений от -20 до 19 (т.е. получается 40 возможных значений: -20, -19, -18 . 0, 1, 2 . 19) и называется niceness (сокращенно NI). Чем меньше это значение, тем выше приоритет будет у такого процесса. Например, если у нас есть один процесс, работающий с приоритетом 10, а другой процесс работающий с приоритетом 15, то в первую очередь будет выполняться процесс приоритетом 10, а уже после него, тот, где приоритет 15. А в ситуации, когда есть 2 процесса и у одного из них приоритет будет равен -20, а у другого равен 10, то в первую очередь процессор будет обрабатывать тот процесс, у которого приоритет равен -20, а уже после тот, у которого приоритет равен 10.
Как узнать приоритет процесса?
С помощью команды top (все запущенные процессы)
Посмотреть приоритет процесса можно с помощью команды top
С помощью команды ps (конкретный процесс(ы) по его имени)
ps -o pid,comm,nice -C mysqld PID COMMAND NI 706 mysqld 0
С помощью команды ps (конкретный процесс по его PID)
ps -o pid,comm,nice 706 PID COMMAND NI 706 mysqld 0
Задание приоритета при запуске процесса
Для того, чтобы задать приоритет при старте нового процесса, необходимо воспользоваться командой nice
nice -n [значение приоритета] [команда]
Запустить утилиту top с приоритетом 15:
nice -n 15 top
Изменение приоритета у существующего процесса
Для того, чтобы изменить приоритет у существующего процесса (т.е. такого процесса, который ранее был уже запущен), необходимо воспользоваться командой renice
renice [значение приоритета] -p [id процесса]
При понижении приоритета у процесса, который является вашим (т.е. запущен под той же учетной записью, под которой вы работаете в системе) — права суперпользователя не требуются, НО при повышении приоритета у процесса, требуется запускать команду renice с правами суперпользователя, т.е. с помощью sudo renice.
В противном случае, вы будете получать ошибку примерно такого содержания:
renice: failed to set priority for 91197 (process ID): Permission denied
sudo renice 0 -p 15483 15483 (process ID) old priority 15, new priority 0
Как определить приоритет задач при создании программ?
Когда вы создаете программные продукты, так или иначе возникает вопрос определения приоритета между стоящими задачами. За что браться первым, что можно отложить на потом и тому подобное. На эту тему написано немало статей и придумано технологий. Но, тут важно понимать, что универсальных подходов попросту не существует.
А все потому, что приоритет складывается из большого числа условий. Другими словами, то что подходит в одном случае, в другом может только навредить. Поэтому в рамках данной статьи я расскажу несколько мыслей на тему как определить приоритет задач при создании программ.
Сразу оговорюсь. Статья не претендует на звание постулата, в ней лишь собран опыт, который может оказаться весьма полезным. Так, что если вы матерый автор многочисленных программных произведений искусства, то, вероятно, эта статья не для вас.
Первое, что стоит понимать, это то, что приоритет никогда не складывается только из двух условий «важность» и «критичность». Задача может быть сверх важной и невероятно критичной, но при определенных условиях легко может быть отложена в дальний угол стола.
Простой пример, ошибка возникла не по вашей вине — пользователь поковырялся ручками в базе данных, в следствие чего продукт перестал подавать признаки жизни. А от вас требуют ее исправления, мотивируя сие действие непродуманностью вашей программы и отсутствием в оной механизма автокоррекции при сбоях. С одной стороны, задача может быть сверх важной, так как помимо любопытного энтузиаста, программой пользуются много людей, и в высокой степени критичной, так как продукт связан с финансовой отраслью, в следствие чего невозможность проводить операции может стать причиной серьезных проблем у пользователей. С другой стороны, ситуация такова, что ошибка возникла не по вашей вине, и вас не просят помочь справится с проблемой, а пытаются перенести всю ответственность на ваши плечи.
Примечание: Пример простой и относительно выдуманный, чтобы, как говорится в фильмах, не было совпадений с реальными событиями.
Как поступать в такой ситуации — это уже тема другой статьи. Тут важен сам факт того, что важность и критичность далеко не единственные условия определения приоритета задач. На самом деле их очень много и чем больше вы будете брать условий в расчет, тем легче будет определять приоритет. Хотя, на первых порах это будет не просто.
Примерами других условий могут быть: необходимость, соразмерность, требования к качеству, обстановка, осмысленность, учет последующих задач, наличие других продуктов с их задачами, сами пользователи и прочее. Например, банально, задача может решаться другим путем или же последующие задачи сделают текущую бессмысленной, допустим, за счет изменения общей логики программы. А этого не видно только лишь из двух условий.
Второе, что стоит понимать, это то, что приоритет не всегда определяет порядок следования. Задача может быть приоритетной, но текущая обстановка может просто сложиться так, что у вас не будет времени на ее решение. К примеру, у вас сегодня есть один час времени, которого не хватит на решение приоритетной задачи, но зато завтра у вас будет целый день. В данном случае, может быть гораздо рациональнее решить вначале менее приоритетную задачу, которая укладывается в час, а затем браться за текущую.
Тут важно, что приоритет это лишь система ранжирования задач, которую необходимость соотносить с происходящими событиями. В противном случае, вы легко можете столкнуться с неприятной ситуацией, когда в итоге ничего не сделано, времени потрачено куча, а параллельные задачи простаивают. Конечно, приоритет важен, но не стоит его отождествлять с порядком следования.
Третье, что стоит понимать, это то, что приоритет носит субъективный характер. Если для вас задача имеет высший приоритет, то это не значит, что она имеет такой же приоритет для другого человека. Верно и обратное. Кроме того, вы попросту можете не знать всех исходных данных.
Поэтому если у вас возникают сомнения в указанном приоритете задачи, то имеет смысл попытаться уточнить детали. Так, например, совсем небольшая мелочь может иметь достаточно большой вес для пользователей.
Рассмотрим пример. Автоматическая подстановка текущей даты в поле. С одной стороны, поставить текущую дату дело 5-10 секунд, поэтому автору продукта назвать такую задачу приоритетной сложно. С другой стороны, если пользователям приходится это проделывать по сто раз, что сильно повышает вероятность ошибки, то такая задача может иметь повышенный приоритет.
Может быть и обратная ситуация, когда приоритет задачи наоборот раздувают. Поэтому всегда помните, что приоритет носит субъективный характер и что всегда имеет смысл уточнять детали.
В конце статьи, хотел бы еще раз вам напомнить, что статья не претендует на истину в последней инстанции, тут лишь приведены мысли, которые вполне могут помочь вам сэкономить кучу времени, нервов и сил.
☕ Понравился обзор? Поделитесь с друзьями!
Источник: ida-freewares.ru