Как заставить `apt-get upgrade` использовать меньше ресурсов?

26

Когда я запускаю sudo apt-get upgradeс большим количеством пакетов на своем ноутбуке младшего класса, у меня заметно ощутимое замедление работы системы, иногда с зависанием экрана до 3 секунд.

Есть ли способ пометить эту работу как с очень низким приоритетом, то есть использовать очень мало ЦП, MEM и HDD? Меня не волнует, что закончится apt-get upgradeдва часа, я просто хочу продолжать работать без сбоев во время обновления.

user1350992
источник

Ответы:

26

Команду niceможно использовать для управления приоритетами планирования ЦП процесса . Команде присваивается процессу значение «правильности» от -20 (наиболее важно) до +19 (наименее важно). Root может присвоить любое значение, другие пользователи - только положительные (незначительное значение). Значением по умолчанию является 0.

nice -n <niceness> <command>

Чтобы установить для приоритета команды apt-get минимальное значение, вы можете использовать команду

sudo nice -n 19 apt-get upgrade

Чтобы установить приоритет уже запущенного процесса, reniceможно использовать команду :

renice -n <niceness> -p <pid>

Редактировать: Спасибо @David за упоминание ioniceкоманды, которая позволяет вам манипулировать приоритетом дискового ввода-вывода . Это может поместить процесс в три различных класса:

  • Режим бездействия дает только время на диске процесса, если никакой другой процесс не требует его в данный момент.
  • Лучшее усилие (класс по умолчанию). Это позволяет назначать приоритеты от 0 до 7, где 0 является наиболее важным, а 7 - наименьшим. Вы можете попробовать назначить -n 7уровень приоритета.
  • Процессы реального времени обрабатываются раньше всего, приостанавливая дисковый ввод-вывод для других процессов, как только они сами этого требуют. Используйте с осторожностью!

IOnice сочетает в себе синтаксис nice и renice:

ionice [-c class] [-n level] command             #To start a new process
ionice [-c class] [-n level] -p pid              #To change a running process

Обе команды могут быть объединены, например,

sudo ionice -n 7 nice -n 19 apt-get upgrade      #Omitting the -c switch will assign Best-effort
sudo nice -n 19 ionice -n 7 apt-get upgrade
nice -n 19 ionice -n 7 sudo apt-get upgrade
...
s3lph
источник
6
Я удивлен, что получил так много голосов. Обновление apt-get связано с IO!
Джошуа
3
как насчет ionice?
Дэвид Лебауэр
1
Так что, чтобы уточнить, что sudoв вашей команде не для nice, а для apt-getсебя? Кажется, это nice -n 19 sudo apt-get upgradeтакже работает для меня. Есть ли важное отличие?
wchargin
1
@WChargin sudo nice apt-getработает как root и позволит установить более низкие приоритеты, чем 0. apt-get все равно будет работать как root. nice sudo apt-getбудет работать хорошо как текущий пользователь и, таким образом, разрешит только приоритеты выше или равные 0. apt-get будет запущен от имени пользователя root.
s3lph
1
@ Давид Я добавил Ионис в свой ответ.
s3lph