Como fazer com que o `apt-get upgrade` use menos recursos?

26

Quando executo sudo apt-get upgrademuitos pacotes no meu laptop de baixo custo, percebo uma lentidão perceptível no sistema, às vezes com congelamentos de até 3 segundos na tela.

Existe alguma maneira de marcar esse trabalho como prioridade muito baixa, ou seja, usar muito pouca CPU, MEM e HDD? Realmente não me importo se demorará mais apt-get upgradeduas horas para terminar, só quero continuar trabalhando sem as interrupções durante a atualização.

user1350992
fonte

Respostas:

26

O comando nicepode ser usado para manipular as prioridades de agendamento da CPU do processo . O comando atribui um valor de "gentileza" de -20 (mais importante) a +19 (menos importante) ao processo. Raiz pode atribuir qualquer valor, outros usuários apenas positivos (menor importância). O valor padrão é 0.

nice -n <niceness> <command>

Para definir a prioridade de um comando apt-get com o menor valor, você pode usar o comando

sudo nice -n 19 apt-get upgrade

Para definir a prioridade de um processo já em execução, o comando renicepode ser usado:

renice -n <niceness> -p <pid>

Editar: Agradecemos a @David por mencionar o ionicecomando, que permite manipular a prioridade de E / S do disco . Ele pode colocar um processo em três classes diferentes:

  • O modo inativo fornece tempo ao disco do processo, se nenhum outro processo o reivindicar no momento.
  • Melhor esforço (classe padrão). Isso permite que você atribua prioridades de 0 a 7, onde 0 é mais importante e 7 menos. Você pode tentar atribuir -n 7como o nível de prioridade.
  • Os processos em tempo real são tratados antes de tudo, suspendendo a E / S de disco para outros processos, assim que necessário. Use com cuidado!

O IOnice combina a sintaxe de nice e renice:

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

Ambos os comandos podem ser combinados, por exemplo

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
fonte
6
Estou surpreso que isso tenha recebido muitos votos. A atualização apt-get está vinculada ao IO!
Joshua Joshua
3
que tal ionice?
David LeBauer
1
Então, para esclarecer, o sudocomando não é para nice, mas para apt-getsi mesmo? Parece que nice -n 19 sudo apt-get upgradetambém funciona para mim. Existe alguma diferença importante?
Wchargin
1
O @WChargin sudo nice apt-getfunciona bem como root e permitirá definir prioridades inferiores a 0. O apt-get ainda funcionará como root. nice sudo apt-getfuncionará bem como o usuário atual e, portanto, permitirá apenas prioridades maiores ou iguais a 0. apt-get será iniciado como root.
S3lph
1
@ David Adicionei ionice à minha resposta.
S3lph