Управление приоритетом процессов

В GNU/Linux используется режим выполнения процессов с разделением вре- мени. В каждый момент времени центральный процессор выполняет инст- рукции одного-единственного процесса, а все остальные процессы находятся в режиме ожидания. Все процессорное время разделено на части — time slices (другое название — TIC). Маловероятно, чтобы процесс находился на испол- нении процессора в течение всего времени TIC. Он может быть снят с испол- нения более "важным" для системы процессом. Поэтому говорят о приори- тете процессов в GNU/Linux.

Процессы, обладающие в системе бóльшим приоритетом, исполняются быст- рее. Процесс выполняется тем быстрее, чем: чаще процесс попадает на ис- полнение, чем полнее он использует промежуток времени time slice.

Работа по обслуживанию очереди процессов осуществляется планировщи- ком. Планировщик вычисляет для каждого процесса величину, которую можно увидеть в поле PRI листинга, выводимого командой ps –l (при- мер 5.23). Чем ниже величина PRI, тем выше приоритет процесса, следова- тельно, быстрее он выполняется, поэтому для избежания путаницы далее в тексте вместо слов "увеличение и уменьшение приоритета" будут исполь- зованы, соответственно, "улучшение и уменьшение приоритета". Величина PRI постоянно изменяется, обеспечивая для процессов, которые давно не бы- ли на исполнении процессором, улучшение приоритета, и, наоборот, для процессов, которые были исполнены только что, — его ухудшение.

 

Пример 5.23. Приоритет процессов

 

$ ps -l

 

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 74 - 783 11c541 pts/0 00:00:00 bash
0 R 4 77 - 618 - pts/0 00:00:00 ps

 

На основании вычисленной величины приоритета PRI ядро определяет, какой процесс следующим попадет на исполнение. В примере 5.23 заметна также величина NI — nice number. Это число, устанавливаемое пользователем, на- зывается иначе относительным приоритетом.

С помощью nice number пользователь может влиять на вычисляемую плани- ровщиком величину приоритета процесса. Чем ниже значение nice number, тем лучше будет приоритет процесса и тем быстрее он будет работать. В GNU/Linux значение nice number задается в пределах от –20 до 19. По умол- чанию nice number равно 0.


 

Для обычных пользователей отведен диапазон положительных значений nice number. В область отрицательных значений эту величину может устанавли- вать только суперпользователь. То есть обычные пользователи могут жерт- вовать производительностью своих приложений ради общего быстродейст- вия системы.

Значение nice number можно установить с помощью команды nice. После нее в качестве аргумента задается команда, которая должна быть исполнена с измененным приоритетом. По умолчанию команда nice увеличивает значе- ние nice number на 10, ухудшая, таким образом, приоритет этого процесса. Если требуется указать иное значение увеличения nice number, то его следует указать после опции -n.

Запустим, например, Bash с ухудшенным приоритетом (пример 5.24).

 

Пример 5.24. Запуск процесса с измененным значением nice number

 

$ nice -n 19 bash

$ ps -l

 

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S - 784 11c541 pts/0 00:00:00 bash
0 S - 780 11c541 pts/0 00:00:00 bash
0 R - 618 - pts/0 00:00:00 ps

$ nice 19

 

В примере 5.24 продемонстрировано, как с помощью команды nice -n 19 bash была запущена оболочка bash с ухудшенным приоритетом. В поле NI для этой оболочки команда ps -l выводит значение 19. Поле PRI этого же лис- тинга показывает, что приоритет запущенной оболочки bash действительно ухудшен (78 у дочерней оболочки против 74 у родительской).

Для установки иного значения nice number для уже исполняющегося процес- са следует использовать команду renice. Эта команда обычно доступна только для суперпользователя. Новое значение nice number указывается в ка- честве аргумента команды renice. С помощью этой команды можно изме- нить nice number для конкретного процесса, заданного с помощью его PID после опции -p или же в качестве второго аргумента. Например, для измене- ния nice number оболочки bash из предыдущего примера можно выполнить команду, показанную в примере 5.25.


 

Пример 5.25. Команда renice

 

# renice 10 2559

2559: old priority 19, new priority 10

# ps -l -p 2559

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

0 S 500 2559 1747 0 76 10 - 782 read_c pts/1 00:00:00 bash

 

Данная команда установила новое значение приоритета (поле NI) для обо- лочки, которая была исходно запущена с nice number 19. Заметно, что при- оритет процесса (см. поле PRI) также изменился.

С помощью команды renice можно изменять приоритет всех процессов для заданного после опции -u пользователя (-g для группы пользователей) — пример 5.26.

 

Пример 5.26. Изменение приоритета процессов заданного пользователя

 

# renice 0 -u user1








Дата добавления: 2015-06-12; просмотров: 615;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.