Процесс «приятность» и «приоритет»

61

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

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

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

    
задан Byte Commander 05.08.2015 в 11:17
источник

2 ответа

59

Хорошее значение - это пространство пользователя, а приоритет 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 - Хорошее значение Хорошее значение задачи. Негативный приятный   значение означает более высокий приоритет, тогда как положительное хорошее значение означает   priority.Zero в этом поле просто означает, что приоритет не будет скорректирован   в определении способности отправки задачи

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

  1. Вы можете запустить программу с требуемым приоритетом, используя

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

    renice -n nice_value -p process_id
    
ответ дан pl_rock 05.08.2015 в 11:51
источник
17

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

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

В Linux мы можем установить рекомендации для процессора, чтобы следить, когда он смотрит на все задачи, которые он должен выполнять. Эти рекомендации называются хорошенькими или приятными. Масштабы успеха 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
    
ответ дан A.B. 05.08.2015 в 13:06