В каждой системе Linux одновременно выполняется несколько процессов. Они планируются к выполнению планировщиком ядра, который определяет следующий процесс для выполнения в зависимости от множества факторов. Он использует алгоритм планирования на основе приоритетов для ранжирования и запуска процессов.
Процессы с более высоким приоритетом выполняются раньше процессов с более низким приоритетом. В большинстве случаев рекомендуется оставить планирование процессов на усмотрение системы Linux. Но если вам нужно установить приоритет процесса в Linux, это также можно сделать.
Как установить приоритет процесса в Linux
Существует два вида приоритетов, связанных с каждым процессом — один — это значение «приятности», которое варьируется от -20 (самый высокий приоритет) до 19 (самый низкий приоритет), а другой — приоритет реального времени, варьирующийся от 1 до 99. Когда мы хотим установить приоритет процесса, мы изменяем значение «приятности» процесса.
ПОСТОЯННЫЙ ПРИОРИТЕТ ЛЮБОМУ ПРОЦЕССУ БЕЗ ПРОГРАММ
Вы можете проверить значение приоритета процесса, используя ps, top или htop.
ps -eo pid,ppid,ni,comm
Столбец NI в выводе выше показывает значение важности (приоритет). Вы также можете использовать команды top и htop, которые по умолчанию показывают значения niceness.
Если у вас есть долго выполняющаяся программа с интенсивным использованием процессора, которая, как вы думаете, не будет запущена в ближайшее время, то вы можете использовать команду nice для установки ее приоритета. Вот синтаксис команды nice.
nice -n [niceness-value] [команда args]
Источник: g-soft.info
Как получить / установить приоритет процесса?
Delphi , Программа и Интерфейс , Процессы и Сервисы
Function SetProcessPriority( Priority : Integer ) : Integer;
Var
H : THandle;
Begin
Result := ppNormal;
H := GetCurrentProcess();
If ( Priority = ppIdle ) Then
SetPriorityClass( H, IDLE_PRIORITY_CLASS )
Else If ( Priority = ppNormal ) Then
SetPriorityClass( H, NORMAL_PRIORITY_CLASS )
Else If ( Priority = ppHigh ) Then
SetPriorityClass( H, HIGH_PRIORITY_CLASS )
Else If ( Priority = ppRealTime ) Then
SetPriorityClass( H, REALTIME_PRIORITY_CLASS );
Case GetPriorityClass( H ) Of
IDLE_PRIORITY_CLASS : Result := ppIdle;
NORMAL_PRIORITY_CLASS : Result := ppNormal;
HIGH_PRIORITY_CLASS : Result := ppHigh;
REALTIME_PRIORITY_CLASS : Result := ppRealTime;
End;
End;
Function SetProcessPriority( Priority : Integer ) : Integer;
для установки приоритета Вашего приложения, либо:
Function GetProcessPriority : Integer;
для получения приоритета.
Как Поставить Высокий Приоритет Процессу(игре, программе,) в Windows 10. Поднять FPS в Игре.
Пример
Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать с осторожностью — т.к. присвоение слишком высокого приоритета может привети к медленной работе остальных программ и системы в целом. См. Win32 help for SetThreadPriority() function.
Статья Как получить / установить приоритет процесса? раздела Программа и Интерфейс Процессы и Сервисы может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
Источник: www.kansoftware.ru
Установка приоритета для запланированных заданий
Недавно столкнулся с тем, что задача, запущенная из планировщика, отрабатывала в несколько раз дольше, чем при запуске вручную. Как выяснилось, у каждого задания планировщика есть собственный приоритет выполнения, согласно которому ему выделяются вычислительные ресурсы (процессорное время и память). По умолчанию этот приоритет достаточно низок, поэтому ресурсоемкие задачи могут работать гораздо медленнее, чем обычно.
Для решения этой проблемы есть несколько способов, о которых и пойдет речь дальше.
Редактирование xml-файла
Изменить приоритет выполнения задания напрямую из оснастки планировщика невозможно, но можно выгрузить задание в xml-файл и отредактировать его. Для выгрузки выбираем задание, кликаем по нему правой клавишей и выбираем пункт «Export».
Затем открываем файл задания, находим раздел Priority и указываем желаемый приоритет. Для запланированных заданий по умолчанию устанавливается значение 7, что означает ниже среднего. Обычно для повышения приоритета достаточно указать значение 5 (выше среднего).
Примечание. Приоритет запланированного задания может принимать значение от 0 до 10, чем ниже значение, тем выше приоритет. Более подробно о приоритетах можно узнать здесь.
После редактирования импортируем обратно получившееся задание. Для этого выбираем в планировщике нужную папку, кликаем по ней правой клавишей мыши и выбираем пункт «Import Task». Если вы хотите импортировать задание с тем же именем, то необходимо предварительно удалить из планировщика исходное задание.
Также можно воспользоваться утилитой командной строки schtasks. Вот так будет выглядеть команда для экспорта:
schtasks /Query /XML /TN ″MyTask″ >C:TasksMyTask.xml
А импортировать задание можно командой:
schtasks /Create /TN ″MyTask″ /XML ″C:TasksMyTask.xml″
Настройка приоритета с помощью PowerShell
Начиная с Windows 8Server 2012 настроить приоритет задания можно с помощью PowerShell. Посмотреть текущий приоритет можно так:
$task = Get-ScheduledTask -TaskName ″MyTask″
$task.Settings.Priority
$settings = New-ScheduledTaskSettingSet -Priority 5
Set-ScheduledTask -TaskName ″MyTask″ -Settings $settings
Групповые политики
В доменной среде для распространения запланированных задач очень удобно пользоваться групповыми политиками.
Для таких заданий изменить приоритет можно следующим образом. Сначала в оснастке редактора групповых политик открываем нужный GPO и находим его ID.
Затем переходим в SYSVOL, открываем директорию с групповыми политиками и находим нужную политику по ее ID.
Открываем найденный xml-файл и редактируем приоритет, который, также как и в случае локального задания, находится между тегами Priority.
Для ускорения можно пройтись по компьютерам и обновить политики командой gpupdate /force.
Источник: windowsnotes.ru