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

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

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

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

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

1 ответ

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

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

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

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

Источник

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

nice -n 10 firefox

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

renice 10 -p $(pgrep firefox)

Чтобы установить приоритет <0, вам нужно sudo, например: [!d9 ]

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
ответ дан 23 May 2018 в 18:29
  • 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

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

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