Os comandos nice
e renice
permitem que você ajuste como o kernel trata seus processos ajustando suas prioridades. Leia este tutorial para aprender como usá-los em sistemas operacionais Linux e semelhantes ao Unix, como o macOS.
Índice
É tudo uma questão de processo
Dentro do seu computador Linux ou semelhante ao Unix, haverá muitos processos em execução antes mesmo de você iniciar o aplicativo que deseja usar. A maioria desses processos são elementos vitais do próprio Linux ou processos de suporte para o seu ambiente gráfico de desktop. Há muita coisa acontecendo nos bastidores. Claro, existem tantos recursos do sistema e tempo de CPU disponíveis. O kernel do Linux é o controlador de todos esses processos.
É o kernel que deve decidir quais processos recebem atenção e recursos agora, e quais devem esperar. O kernel está continuamente fazendo malabarismos com processos e prioridades para garantir que o computador funcione da melhor maneira possível e que todos os processos tenham seu compartilhamento apropriado. Alguns processos recebem tratamento preferencial. Eles são tão importantes para a operação geral do computador que suas necessidades têm que vir antes de, digamos, seu navegador.
O bom valor
Um dos critérios usados para determinar como o kernel trata um processo é o valor agradável. Cada processo tem um bom valor. O valor legal é um número inteiro no intervalo de -19 a 20. Todos os processos padrão são iniciados com um valor bom de zero.
O truque aqui é que quanto maior o valor agradável, mais agradável seu processo será para os outros processos. Em outras palavras, um valor bom alto diz ao kernel que esse processo está feliz em esperar. Um número negativo é o oposto de ser legal. Quanto maior o valor negativo agradável, mais egoísta é o processo. Ele está tentando obter o máximo de tempo de CPU possível, sem levar em consideração os outros processos.
Podemos usar o nice
comando para definir o valor bom quando um processo é iniciado e podemos usar renice
para ajustar o valor bom de um processo em execução .
O bom comando
Podemos usar o nice
comando para ajustar o valor legal de um programa à medida que o iniciamos. Isso nos permite aumentar ou diminuir a prioridade dada ao processo pelo kernel, em relação aos outros processos.
Vamos supor que um programador escreveu um programa chamado ackermann
. Isso calcula as funções de Ackerman . É um processo intensivo de CPU e memória. O programador pode iniciar o programa com o seguinte comando:
./ackermann
Podemos usar o top
comando para visualizar o programa em execução.
topo
Podemos ver os detalhes do ackermann
programa em top
. O bom valor é a figura na “coluna NI”. Ele foi definido como zero, como esperávamos.
Vamos reiniciá-lo e desta vez torná-lo menos exigente. Definiremos um bom valor de 15 para o ackermann
programa da seguinte maneira. Digite nice, um espaço, -15, outro espaço e, em seguida, o nome do programa que deseja iniciar. Em nosso exemplo, nosso programador fictício está usando ./ackermann
.
nice -15 ./ackermann
Preste atenção, o “-15” não é quinze negativo. São quinze positivos. O “-” é necessário para informar nice
que estamos passando um parâmetro. Para indicar um número negativo, você deve digitar dois caracteres “-”.
Se começarmos de top
novo, podemos ver a mudança no comportamento de ackermann
.
topo
Com um bom valor de 15, ackermann
não está consumindo muito tempo da CPU. GNOME e Rhythmbox estão usando mais. Nós refreamos ackermann
um pouco.
Agora vamos fazer o inverso e fornecer ackermann
um valor agradável negativo. Observe o uso de dois caracteres “-”. Para tornar um aplicativo mais egoísta e menos agradável, você deve usar sudo
. Qualquer um pode tornar seu aplicativo mais agradável, mas apenas os superusuários podem torná-lo mais egoísta.
sudo nice --10 ./ackermann
Vamos começar e ver que diferença isso fez.
topo
Desta vez, ackermann
tem um bom valor de -10. Ele está de volta à linha de frente e consumindo mais tempo da CPU do que antes.
O Comando Renice
O renice
comando nos permite ajustar o bom valor de um processo em execução. Não precisamos pará-lo e reiniciá-lo com nice
. Podemos definir um novo valor imediatamente.
O renice
comando usa o ID do processo, ou PID, do processo como um parâmetro de linha de comando. Podemos extrair o ID do processo da coluna “PID” do top
, ou podemos usar ps
e grep
encontrá-lo para nós, como segue. Obviamente, você digitará o nome do seu usuário em vez de dave
e o nome do processo no qual está interessado ackermann
.
ps -eu dave | grep ackermann
Agora que temos o PID, podemos usá-lo renice
. Vamos ackermann
voltar a um comportamento mais agradável com um bom valor de cinco. Para alterar o valor agradável de um processo em execução, você deve usar sudo
. Observe que não há “-” no 5
parâmetro. Você não precisa de um para números positivos e só precisa de um, não dois, para números negativos.
sudo renice -n 5 2339
Recebemos a confirmação de que renice
alterou o valor agradável. Mostra-nos o valor antigo e o novo valor.
O kernel geralmente faz um ótimo trabalho ao lidar com as prioridades e distribuir o tempo da CPU e os recursos do sistema. Mas se você tem uma tarefa longa e que exige muito da CPU para executar e não se importa quando ela é concluída, isso fará com que seu computador funcione um pouco mais suavemente se você definir um valor agradável mais alto para essa tarefa. Isso será melhor para todos.