Обработайте 'правильность' по сравнению с 'приоритетом'

При выполнении top, Я вижу этот (сокращенный) вывод в качестве примера:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 4586 ipc-adm+  20   0 1303900 605152  92844 S  30,6 29,3   3:52.88 firefox
 3985 ipc-adm+  20   0  258588 124508  63072 S  12,2  6,0   0:40.04 compiz
 3092 root      20   0  172392  56164  25980 S   6,1  2,7   0:30.13 Xorg

Существует два значения, которыми я интересуюсь: PR (Приоритет) и NI (Правильность).

Если я понял то, что я уже узнал правильно, оба определяют, сколько процессорного времени процесс доберется в отличие от других процессов. Но каково различие между теми значениями затем?

Могли Вы также описывать, как управлять теми значениями процесса и под которыми обстоятельствами это могло бы быть полезно?

107
задан 5 August 2015 в 02:17

3 ответа

Хорошее значение является пространством пользователя и приоритетом, PR является фактическим приоритетом процесса, которые используют ядром Linux. В Linux системные приоритеты от 0 до 139 в который от 0 до 99 в течение реального времени и 100 - 139 для пользователей. хороший диапазон значений-20 к +19, где-20 является самым высоким, 0 значений по умолчанию и +19 являются самыми низкими. отношение между хорошим значением и приоритетом:

PR = 20 + NI

таким образом, значение PR = 20 + (-20 to +19) от 0 до 39 это карты 100 - 139.

Согласно главному руководству:

PR - Приоритет приоритет планирования задачи. Если Вы видите 'rt' в этом поле, это означает, что задача работает под приоритетом планирования 'реального времени'.

NI является хорошим значением задачи.

NI - Хорошее Значение хорошее значение задачи. Отрицательное хорошее значение означает более высокий приоритет, тогда как положительное хорошее значение означает более низкий приоритет. Нуль в этом поле просто означает, что приоритет не будет скорректирован в определении способности отправки задачи

Править: По умолчанию, когда программа запускается в Linux, она запускается с приоритетом '0'. Однако можно изменить приоритет программ любым из следующих методов.

  1. Можно запустить программу с необходимым приоритетным использованием

    nice -n nice_value program_name
    
  2. можно также изменить приоритет уже рабочего использования процесса

    renice -n nice_value -p process_id
    
107
ответ дан 22 November 2019 в 23:00

Что такое Приоритет и Почему я должен Заботиться?

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

В Linux мы можем установить инструкции для ЦП для следования, когда он смотрит на все задачи, он должен сделать. Эти инструкции называют правильностью или хорошим значением. Масштаб правильности Linux идет от-20 до 19. Чем ниже число, тем больше приоритета, который получает задача. Если значение правильности будет высоким количеством как 19, то задача поставится к самому низкому приоритету, и ЦП обработает его каждый раз, когда это получает шанс. Хорошее значение по умолчанию является нулем.

При помощи этого масштаба мы можем выделить наши ресурсы ЦП более соответственно. Более низкие приоритетные программы, которые не важны, могут быть установлены на более высокое хорошее значение, в то время как высокоприоритетные программы как демоны и сервисы могут быть установлены получить больше фокуса CPU’s. Можно даже дать определенному пользователю более низкое хорошее значение для всех его процессов, таким образом, можно ограничить их способность замедлить computer’s базовые сервисы.

Источник

Набор приоритет для новых процессов с nice, например,

nice -n 10 firefox

для существующих процессов

renice 10 -p $(pgrep firefox)

Для установки приоритета <0 Вам нужно sudo, например:

renice -1 -p $(pgrep firefox)
renice: failed to set priority for 2769 (process ID): Permission denied

, но не для приоритета >=0

<час>

Пример

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          19   0

% renice 10 -p 2769     # note, we don't need sudo here
2769 (process ID) old priority 0, new priority 10

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox           9  10

% sudo renice -19 -p 2769                    
 2769 (process ID) old priority 10, new priority -19

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          38 -19
<час>

Другой пример

К renice все рабочие процессы для определенного пользователя

renice 20 -u user_name
28
ответ дан 22 November 2019 в 23:00

Короткий ответ

PR является приоритетным уровнем. Чем ниже PR, тем выше приоритет процесса будет.

PR вычисляется следующим образом:

  • для нормальных процессов: PR = 20 + NI (NI хороша и колеблется от-20 до 19),
  • для оперативных процессов: PR = - 1 - real_time_priority (real_time_priority колеблется от 1 до 99),

Длинный ответ

Существует 2 типа процессов, нормальные и реальное время Для нормальных (и только для тех), хороший применяется следующим образом:

Мило

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

PR = 20 + NI

Где NI является хорошим уровнем, и PR является приоритетным уровнем. Таким образом, поскольку мы видим,-20 на самом деле карты к 0, в то время как 19 карт к 39.

По умолчанию, программа, которая хорошее значение 0, но для пользователя root возможно запустить программы с указанным хорошим значением при помощи следующей команды:

nice -n <nice_value> ./myProgram 

Реальное время

Мы могли пойти еще больше. Хороший приоритет на самом деле используется для пользовательских программ. Принимая во внимание, что UNIX/LINUX, полный приоритет имеет диапазон 140 значений, хорошее значение, позволяет процессу отобразиться на последнюю часть диапазона (от 100 до 139). Это уравнение оставляет значения от 0 до 99 недостижимых, которые будут соответствовать отрицательному уровню PR (от-100 до-1). Чтобы смочь получить доступ к тем значениям, процесс должен быть указан как "реальное время".

Существует 5 политик планирования в среде LINUX, которая может быть отображена со следующей командой:

chrt -m 

Который покажет следующий список:

1. SCHED_OTHER   the standard round-robin time-sharing policy
2. SCHED_BATCH   for "batch" style execution of processes
3. SCHED_IDLE    for running very low priority background jobs.
4. SCHED_FIFO    a first-in, first-out policy
5. SCHED_RR      a round-robin policy

Процессы планирования могли быть разделены на 2 группы, нормальные политики планирования (1 - 3) и политики планирования реального времени (4 и 5). Оперативные процессы будут всегда иметь приоритет над нормальными процессами. Оперативный процесс можно было назвать с помощью следующей команды (Пример - то, как объявить политику SCHED_RR):

chrt --rr <priority between 1-99> ./myProgram

Для получения значения PR для процесса реального времени, следующее уравнение применяется:

PR =-1 - rt_prior

Где rt_prior соответствует приоритету между 1 и 99. По этой причине процесс, который будет иметь более высокий приоритет над другими процессами, будет тем, названным с номером 99.

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

Для наблюдения текущей "правильности" и значения PR процесса, следующая команда может быть выполнена:

top

Который показывает следующий вывод:

enter image description here

В числе отображены PR и значения NI. Хорошо отметить, что процесс с PR оценивает-51, который соответствует оперативному значению. Существуют также некоторые процессы, значение PR которых указано как "rt". Это значение на самом деле соответствует значению PR-100.

16
ответ дан 22 November 2019 в 23:00

Другие вопросы по тегам:

Похожие вопросы: