Разница между уменьшением приоритета против увеличения сглаживания или наоборот [dубликат]

При запуске 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 ( Niceness).

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

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

75
задан 5 August 2015 в 12:17

5 ответов

nice value - это пространство пользователя, а приоритет 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 - хорошее значение задачи.

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

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

. Вы можете запустить программу с требуемым приоритет, используя nice -n nice_value program_name , вы также можете изменить приоритет уже запущенного процесса, используя renice -n nice_value -p process_id
69
ответ дан 18 July 2018 в 04:37

nice value - это пространство пользователя, а приоритет 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 - хорошее значение задачи.

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

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

. Вы можете запустить программу с требуемым приоритет, используя nice -n nice_value program_name , вы также можете изменить приоритет уже запущенного процесса, используя renice -n nice_value -p process_id
69
ответ дан 24 July 2018 в 18:07

, что является приоритетом и почему я должен заботиться?

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

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

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

Источник

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

nice -n 10 firefox

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

renice 10 -p $(pgrep firefox)

, чтобы установить приоритет <0 необходимо нажать [F8], например:

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

но не на приоритет [F9] и

пример

% 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

пример

[dиода d17]с помощью renice все запущенные процессы для конкретного пользователя[!dиода d17] renice 20 -u user_name
19
ответ дан 18 July 2018 в 04:37

Что такое приоритет и почему я должен ухаживать?

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

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

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

Источник

Установите приоритет для новых процессов с 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 20 -u user_name
19
ответ дан 24 July 2018 в 18:07
  • 1
    В вашем примере renice 10 также будет работать без sudo, верно? И не могли бы вы добавить пример, чтобы сделать все процессы конкретного пользователя более приятными? Это было бы очень полезно, если бы кто-то еще вошел в систему одновременно и имел некоторые ненужные, но ресурсоемкие процессы (например, приостановленная флеш-игра в Firefox, маленькие братья делают такие вещи ...: - /) – Byte Commander 5 August 2015 в 15:25
  • 2
    @ByteCommander done =) – A.B. 5 August 2015 в 16:02
  • 3
    Как восстановить старые значения хорошего качества этого пользователя через некоторое время? Возврат к 0? Это не будет учитывать, что некоторые процессы, возможно, имели другую ценность. Есть ли простая возможность сделать это? – Byte Commander 5 August 2015 в 16:04
  • 4
    @ByteCommander Нет, это не просто. Либо вы используете 0, либо ... есть проблема;) – A.B. 5 August 2015 в 16:11
  • 5
    @ByteCommander но я мог бы написать скрипт для этого ;) – A.B. 5 August 2015 в 18:09

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

PR - это уровень приоритета. Чем ниже PR, тем выше приоритет процесса.

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

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

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

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

Nice

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

PR = 20 + NI

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

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

nice -n <nice_value> ./myProgram 

Real Time

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

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

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.

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

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

top

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

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

2
ответ дан 7 October 2018 в 22:09

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

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