Использование команд nice и renice для изменения приоритета процесса в Linux

Вы можете изменить, должен ли определенный процесс получать приоритет при потреблении ЦП с помощью команд nice и renice.

Каждый отдельный процесс, запущенный на компьютере с Linux, имеет приоритет для своего выполнения, который может быть преобразован в то, сколько мощности процессора будет выделено этому процессу для выполнения.

Конечно, в Linux вы можете контролировать столько, сколько захотите, поэтому вы также можете контролировать, какой приоритет что-либо должно иметь в системе при его запуске.

Как проверить правильность или приоритет процесса?

Если вы запустите команду ps, вы сможете увидеть, какие процессы в данный момент запущены в вашей системе Linux и какой приоритет они имеют в данный момент:

 

команда ps перечисляет процессы и показывает приоритеты

команда ps перечисляет процессы и показывает приоритеты

Теперь, если вы хотите запустить что-то с большим приоритетом (тогда как приоритетом будет большая мощность процессора), вы можете использовать команду ‘nice’, чтобы запустить это и контролировать, насколько этот конкретный процесс приятен для остальной части системы.

Приоритетность удобства выполнения этой команды изменяется от -20 до 19, где -20 означает наивысший приоритет и, как следствие, максимально возможную мощность процессора, до 19, что является минимально возможным значением и, следовательно, меньшим распределением мощности процессора.

Как использовать команду nice?

Чтобы использовать команду nice, вы должны быть root или иметь возможности sudo в системе, поскольку это очень деликатная команда.

Предполагая, что вы являетесь пользователем root, вы должны ввести:

 

nice -n 12 <command>

Это сообщит системе, что вы хотите запустить <command>, используя приоритет 12 (10 по умолчанию, если вы не вводите никаких значений). В принципе, он будет занимать низкое место в списке приоритетов и, следовательно, не будет потреблять всю мощность процессора.

Для чего это полезно?

Представьте, что у вас есть процесс, который выполняет несколько вычислений и выполнение которого может занять несколько секунд или даже минут. Чем больше мощности выделено этому процессу, тем быстрее он запустится и завершится. Именно здесь эта команда может стать полезной, хотя и опасной.

Если у вас есть скрипт, который запускает множество процессов в общей среде или на рабочем сервере, запуск чего-либо с более высоким приоритетом может привести к тому, что сервер перестанет отвечать на запросы или выйдет из строя. Это потому, что центральный процессор будет выделен почти исключительно для запуска любого процесса, который вы вызвали с высоким приоритетом (или отрицательным значением), следовательно, он перестанет отвечать на запросы или даже отключит сервер, например, если в вашем скрипте есть бесконечный цикл.

Как изменить приоритет запущенного процесса с помощью команды renice?

Допустим, вы начали запускать процесс с помощью команды nice, но через некоторое время вы хотите изменить его, хотя вам нужно, чтобы процесс продолжал работать, а не прерывал его или перезапускал. Здесь пригодится ваша команда ‘renice’.

Команда ‘renice’ может использоваться очень похожим образом и с использованием той же концепции, что и команда nice, однако она предназначена для изменения приоритета, который вы уже вызвали красиво.

Итак, если вы уже запускаете команду с помощью nice, вы можете изменить ее приоритет с помощью renice следующим образом (опять же, запустив ее от имени пользователя root):

 

renice -n -10 <command>

 

Это изменит предыдущий приоритет процесса, чтобы он стал более важным, следовательно, теперь с большей мощностью (-10).

Вы даже можете использовать это для всех процессов, принадлежащих определенному пользователю, например:

renice -n -10 -u helder

Это изменит приоритет всех процессов, принадлежащих пользователю helder.

Аналогичным образом вы можете использовать такие параметры, как -p и указать идентификатор процесса (или pid) или -g и использовать идентификатор группы процессов.

Заключение

Вы можете видеть, как Linux позволяет контролировать все, насколько это возможно, в вашей системе, и позволяет вам использовать это в свою пользу.

Возможность назначать и переназначать приоритеты для ваших процессов дает нам большие возможности контролировать, как наша система управляет процессами, насколько эффективно, а также какие расставить приоритеты, чтобы иметь возможность удовлетворить любую вашу потребность.