- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Приоритеты процессов Linux
- Установка приоритетов для процессов в Linux
- Администрирование систем Linux. Приоритеты процессов
- Глава 2. Приоритеты процессов
- 2.1. Приоритеты процессов и значения nice
- 2.2. Практическое задание: приоритеты процессов
- 2.3. Корректная процедура выполнения практического задания: приоритеты процессов
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Приоритеты процессов Linux
4 минуты чтения
Данная тема важна так как позволяет изменять приоритет процессов в операционной системе Linux. Иногда возникает такая ситуация, что необходимо изменить приоритет процессов, какой — то процесс сделать более приоритетным, отдав побольше ресурсов, а какой-то менее приоритетным забрав часть ресурсов сервера. В данной теме мы рассмотрим следующие вопросы:
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
- Научимся определять приоритеты процессов;
- Рассмотрим, как запускать программы с повышенным приоритетом или с пониженным;
- Посмотрим, как изменять приоритет запущенных программы.
В Linux любой процесс может иметь приоритет от -20 до +19. Во FreeBSD до +20. Максимальным приоритетом считается, тот процесс у которого минимальное число. Т.е. максимальный по приоритету процесс будет иметь число — 20, а минимальный -19 соответственно. Поэтому задача с приоритетом -20 будет выполняться в первую очередь с максимум ресурсов и наоборот задача с +19 будет выполняться в последнюю очередь и минимум ресурсов. Linux для установки приоритетов использует такую программу nice и renice.
Для того, чтобы рассмотреть данную тему воспользуемся командой ps aux . Запуская данную команду мы получаем все сведения о запущенных процессах на данном сервере. Так же мы можем увидеть от какого пользователя данный процесс запущен. Теперь мы используем другой набор ключей для команды ps .
Чтоб получить нам интересующий вывод данных используем команду ps alx .
Мы можем видеть, что получили немного другую информацию. Появилась колонка, промаркированная «NI» и колонка «PRI«. Мы можем видеть, что верхние процессы выполняются с nice 0, т.е. это авторитет по умолчанию, который присваивается если не сказано иного. Возьмем другой вариант команды ps , с другими ключами.
- ps -eo user,pid,pcpu,nice,comm
- -e — ключ показывать все
- -o — output т.е какая информация нужна, далее в команде перечисляется необходимая информация (колонки)
После ввода данной команды, мы видим, что столбцов стало меньше. Только то, что мы запрашивали, пользователь, ID процесса, загрузка CPU, приоритет и какая команда.
Для того, чтобы понять, что такое приоритет, попробуем использовать команду sleep, которая позволяет, остановить операционную систему на указанное число секунд.
И выведем команду ps -eo user,pid,pcpu,nice,comm | grep sleep , используя pipline сортируем по названию процесса sleep. Вот, что у нас вышло.
Видим наш запущенный процесс.
Далее запустим какую-нибудь задачу с максимальным приоритетом. Это полезно если мы хотим запустить, какой ни будь серьезный процесс, чтобы он получил максимальный приоритет. Как пример, срочная переиндексация базы данных на сервере с максимальным приоритетом или программку, которая будет собирать информацию о системе с минимальным приоритетом.
И мы можем увидеть, что появился наш процесс со значение 10 по умолчанию.
Десять — это приоритет по умолчанию, и он ниже, чем ноль. Чем выше значение, тем приоритет ниже. Т.е. получается если мы запускаем с командой niсе, то процесс запускает с приоритетом ниже в 2 раза, чем просто если бы запустили.
Мы можем принудительно завершить процессы. killall sleep .
Попробуем запустить задачу с минимальным приоритетом. Для этого воспользуемся параметром. Команда будет выглядеть следующим образом.
Как мы видим все получилось. Процесс запущен с минимальным приоритетом.
Аналогично запускается процесс с максимальным приоритетом.
Тут нужно пояснить, что задачи с наивысшим приоритетом, могут пользователи только с правами root. Если мы бы попытались сделать из-под обычного пользователя, то ничего у нас бы не вышло.
killall sleep , еще раз завершим принудительно процессы. Запустим еще раз процесс с наименьшим приоритетом. nice -n 19 sleep 60000 . Теперь изменим приоритет текущего процесса. Для этого есть следующая команда:
Как мы видим все успешно поменялось. Вот таким образом мы можем динамически менять приоритеты. В Операционной системе Windows мы так же можем менять приоритеты в менеджере задач, но если там пять уровней, то в Linux их получается 40.
Мы можем так же менять приоритеты определенному пользователю.
Данные команды, нам позволяют гибко управлять распределением ресурсов на нашем сервере.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Источник
Установка приоритетов для процессов в Linux
Все процессы в системе трудятся с определёнными приоритетами, также называемыми «значениями nice», которые могут изменяться от -20 (верхний приоритет) до 19 (наименьший приоритет). Если оно не определено, каждый процесс будет запускаться с ценностью по умолчанию — 0 («базовым» приоритетом (понятие, показывающее важность, первенство) распределения машинного времени). Для процессов с более рослым приоритетом (меньшим значением nice, вплоть до -20) будет выделено больше целых ресурсов по сравнению с другими процессами с меньшим приоритетом (до 19), предоставляя им большее количество циклов процессора. Все пользователи, кроме рута, могут только понижать приоритет собственных собственных процессов в диапазоне от 0 до 19. Суперпользователь (root) для любого процесса может водворить любое значение приоритета.
Если один или несколько процессов используют очень много ресурсов системы, вы можете изменить их приоритеты вместо того, чтобы уничтожать их. Для этого используется команда renice. Ее синтаксис:
renice приоритет [[-p] pid . ] [[-g] pgrp . ] [[-u] user . ]
Где приоритет — значение приоритета, pid — идентификатор процесса (используйте опцию -p для указания нескольких действий), pgrp — идентификатор группы процесса (если их несколько, используйте -g) и user — имя пользователя, обладающего процессом (-u для нескольких пользователей). Давайте представим, что вы запустили процесс с PID 785, который исполняет длительные научные вычисления, а пока он работает, вы хотели бы немного расслабится и поиграть, для что вам нужно освободить немного системных ресурсов. Тогда вы можете набрать:
В данном случае выполнение вашего процесса потенциально может занять больше времени, хотя он не будет забирать процессорное время у других процессов. Если вы системный администратор и приметили, что какой-то пользователь запустил слишком много процессов, и они используют слишком много целых ресурсов, вы можете изменить приоритет процессов этого пользователя при помощи одной бригады:
# renice +20 -u peter
После все процессы пользователя peter получат наименьший ценность и не будут затруднять работу процессов других пользователей.
Теперь, когда вы видите о том, что можно изменять приоритеты процессов, вам может понадобиться запустить программу с определенным ценностью. Для этого используйте команду nice. В этом случае вам необходимо указать свою бригаду в качестве опции для nice. Опция -n используется для установки значения приоритета. По умолчанию nice ставит приоритет 10. Например, вам нужно создать ISO-образ установочного CD-ROM’а с Mandrakelinux:
$ dd if=/dev/cdrom of=
В отдельных системах со стандартным IDE CD-ROM процесс копирования больших объёмов информации может завладеть слишком много ресурсов системы. Чтобы предотвратить блокирование других процессов благодаря копирования, вы можете запустить процесс с пониженным приоритетом при помощи этой команды:
Источник
Администрирование систем Linux. Приоритеты процессов
Глава 2. Приоритеты процессов
2.1. Приоритеты процессов и значения nice
Все процессы в системе имеют соответствующие приоритеты и значения nice . Процессы с более высокими приоритетами будут получать больше процессорного времени , нежели остальные процессы с низкими приоритетами. Вы можете повлиять на распределение процессорного времени, воспользовавшись утилитами nice и renice .
2.1.2. Именованные программные каналы (утилита mkfifo)
Процессы могут обмениваться информацией друг с другом посредством именованных программных каналов . Эти именованные программные каналы могут создаваться с помощью утилиты mkfifo .
В примере ниже показана процедура создания четырех отдельных именованных программных каналов (в новой директории).
2.1.3. Увлекательные манипуляции с утилитой cat
Для демонстрации методики использования утилит top и renice мы будем применять комбинацию из утилиты cat и созданных ранее именованных программных каналов с целью полного исчерпания вычислительных ресурсов центрального процессора .
Бинарный файл cat должен быть скопирован в текущую директорию с отличным именем. (Это позволит нам достаточно просто отслеживать созданные процессы с помощью утилиты top . Вы можете выполнить эти же действия и без копирования бинарного файла cat, но с использованием различных учетных записей пользователей. Или же вы можете просто отслеживать значения идентификаторов каждого из созданных процессов .)
Команды, которые вы можете обнаружить в примере выше, предназначены для создания двух процессов с именами proj33 , которые на самом деле будут являться экземплярами утилиты cat , выполняющими циклическую передачу символа x с помощью именованных программных каналов pipe33a и pipe33b . Те же самые манипуляции осуществляются процессом с именем proj42 с символом z.
2.1.4. Утилита top
Простой запуск утилиты top без передачи каких-либо параметров или аргументов приведет к выводу информации о параметрах системы и обо всех процессах в системе. При этом в верхней части вывода утилиты top может быть обнаружена следующая информация.
Обратите внимание на нулевое значение времени простоя центрального процессора ( cpu idle time 0.0 id ). Оно объясняется тем, что наши процессы cat используют все вычислительные ресурсы центрального процессора . Результаты могут отличаться при использовании систем с четырьмя или большим количеством ядер центрального процессора .
2.1.5. Команда top -p
Команда top -p 1670,1671,1673,1674 из примера ниже позволяет выводить информацию о четырех процессах, каждый из которых использует примерно 25 процентов вычислительных ресурсов центрального процессора.
Все четыре процесса имеют одинаковый приоритет (столбец PR) и на равных соревнуются за время центрального процессора . В некоторых системах ядро Linux может использовать немного отличающиеся значения приоритетов процессов , но в любом случае в результате описанных выше манипуляций четыре процесса будут на равных соревноваться за время центрального процессора .
2.1.6. Утилита renice
Так как упомянутые ранее процессы уже исполняются, нам придется использовать утилиту renice для изменения их значений nice (столбец NI).
В примере ниже показана методика использования утилиты renice по отношению к обоим процессам с именами proj33 .
Обычные пользователи могут устанавливать значения nice для своих процессов из диапазона от 0 до 20. Отрицательные значения nice может устанавливать исключительно пользователь root . Будьте осторожны при использовании отрицательных значений nice, так как в случае их установки управление системой с помощью клавиатуры или удаленной командной оболочки, работающей по протоколу ssh, может быть значительно осложнено или же вообще окажется невозможным.
2.1.7. Влияние значений nice на работу процессов
Влияние значения nice на работу процесса может может варьироваться. В примере ниже показан результат исполнения нашей команды renice +8 . Обратите внимание на значения доли процессорного времени из столбца %CPU для каждого из процессов.
Важно помнить о том, что значения nice менее важных процессов всегда должны быть выше соответствующих значений более важных процессов. При этом использование отрицательных значений nice может оказать негативное влияние на стабильность работы системы.
2.1.8. Утилита nice
Утилита nice функционирует аналогично утилите renice , но применяется в момент запуска приложения.
В примере ниже показана методика исполнения сценария с значением nice , равным пяти.
2.2. Практическое задание: приоритеты процессов
1. Создайте новую директорию и шесть именованных программных каналов в ней.
2. Инициируйте циклическую передачу символа посредством двух именованных программных каналов .
3. Используйте утилиты top и ps для вывода информации (pid, ppid, приоритет, значение nice, . ) о двух созданных процессах cat.
4. Инициируйте циклическую передачу другого символа посредством двух других именованных программных каналов, но в этот раз используйте утилиту nice для запуска приложений. Проверьте, соревнуются ли созданные процессы за все вычислительные ресурсы центрального процессора. (Не забывайте о том, что в случае необходимости вы можете создать еще два или большее количество процессов cat , использующих оставшиеся программные каналы).
5. Используйте утилиту ps для установления факта использования двумя новыми процессами cat измененных значений nice . Для этого используйте параметры -o и -C утилиты ps .
6. Используйте утилиту renice для увеличения значения nice процессов c 10 до 15. Обратите внимание на отличия в работе данных процессов и процессов со стандартными значениями nice.
2.3. Корректная процедура выполнения практического задания: приоритеты процессов
1. Создайте новую директорию и шесть именованных программных каналов в ней.
2. Инициируйте циклическую передачу символа посредством двух именованных программных каналов .
3. Используйте утилиты top и ps для вывода информации (pid, ppid, приоритет, значение nice, . ) о двух созданных процессах cat.
4. Инициируйте циклическую передачу другого символа посредством двух других именованных программных каналов, но в этот раз используйте утилиту nice для запуска приложений. Проверьте, соревнуются ли созданные процессы за все вычислительные ресурсы центрального процессора. (Не забывайте о том, что в случае необходимости вы можете создать еще два или большее количество процессов cat , использующих оставшиеся программные каналы).
5. Используйте утилиту ps для установления факта использования двумя новыми процессами cat измененных значений nice . Для этого используйте параметры -o и -C утилиты ps .
6. Используйте утилиту renice для увеличения значения nice процессов c 10 до 15. Обратите внимание на отличия в работе данных процессов и процессов со стандартными значениями nice.
Источник