Управление приоритетом процессов
В 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; просмотров: 658;