Header Ads

Como definir prioridades de processo com nice e renice no Linux

Os comandos nice e renice permitem ajustar como o kernel trata seus processos ajustando suas prioridades. Leia este tutorial para aprender a usá-los em sistemas operacionais Linux e Unix, como o macOS.

É tudo uma questão de processo

Dentro do seu computador Linux ou do tipo 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 área de trabalho. Há muita coisa acontecendo nos bastidores. Naturalmente, existem apenas muitos recursos do sistema e tempo de CPU para percorrer. O kernel do Linux é o controlador de todos esses processos.

É o kernel que precisa decidir quais processos recebem atenção e recursos agora e quais precisam esperar. O kernel está continuamente lidando com processos e prioridades para garantir que o computador funcione da melhor maneira possível e que todos os processos recebam o compartilhamento apropriado. Alguns processos recebem tratamento preferencial. Eles são tão importantes para o funcionamento geral do computador que suas necessidades precisam vir primeiro à frente, digamos, do seu navegador.

O bom valor

Um dos critérios usados ​​para determinar como o kernel trata um processo é o valor legal. Todo processo tem um bom valor. O bom valor é um inteiro no intervalo de -19 a 20. Todos os processos padrão são lançados com um bom valor de zero.

O truque aqui é que quanto maior o valor mais agradável, mais agradável o seu processo é sendo para os outros processos. Em outras palavras, um valor alto e bom diz ao kernel que este processo está feliz em esperar. Um número negativo é o oposto de ser legal. Quanto maior o valor negativo, mais egoísta é o processo. Ele está tentando obter o máximo de tempo de CPU possível, sem levar em conta os outros processos.

Podemos usar o comando nice para definir o valor interessante quando um processo é iniciado e podemos usar o renice como ajuste o valor interessante de um processo em execução.

O comando legal

Podemos usar o comando nice para ajustar o valor interessante de um programa conforme o lançamos. Isso nos permite aumentar ou diminuir a prioridade dada ao processo pelo kernel, em relação aos outros processos.

Vamos supor que um programador tenha escrito um programa chamado ackermann. Isso calcula as funções do Ackerman. É CPU e memória intensiva. O programador pode iniciar o programa com o seguinte comando:

[PRÉ] / ackermann

Podemos usar o comando top para visualizar o programa em execução .

 top 

Podemos ver os detalhes do programa ackermann no topo. O bom valor é a figura na "coluna NI". Está definido para zero, como esperávamos.

Vamos reiniciá-lo e, desta vez, torná-lo menos exigente. Vamos definir um bom valor de 15 para o programa ackermann da seguinte forma. Digite nice, um espaço, -15, outro espaço e, em seguida, o nome do programa que você deseja iniciar. Em nosso exemplo, nosso programador fictício está usando ./ackermann.

 nice -15 ./ackermann

Tome cuidado, o “ -15 ”não é quinze negativo. É quinze positivo. O "-" é necessário para dizer que estamos passando em um parâmetro. Para indicar um número negativo, você deve digitar dois caracteres “-”.

Se começarmos agora novamente, podemos ver a mudança no comportamento de ackermann.

 top 

Com um bom valor de 15, o ackermann não está consumindo mais tempo de CPU. O GNOME e o Rhythmbox estão usando mais. Nós controlamos ackermann daqui a pouco.

Agora vamos fazer o inverso e dar a ackermann um bom valor negativo. Observe o uso de dois caracteres “-”. Para tornar um aplicativo mais egoísta e menos agradável, você deve usar o sudo. Qualquer um pode tornar a sua aplicação mais agradável, mas apenas os superusuários podem fazer uma mais egoísta.

 sudo nice --10 ./ackermann

Vamos rodar em cima e ver a diferença que fez.

 top 

IMAGEM_6

Desta vez ackermann tem um bom valor de -10. Ele está de volta à linha de cima e consumindo mais tempo de CPU do que antes.

O comando renice

O comando renice nos permite ajustar o valor interessante de um processo em execução. Nós não precisamos pará-lo e relançá-lo com bom. Podemos definir um novo valor on-the-fly.

O comando renice leva o processo ID, ou PID, do processo como um parâmetro de linha de comando. Podemos extrair o ID do processo da coluna “PID” no topo, ou podemos usar ps e grep para encontrá-lo para nós, como segue. Obviamente, você digitará o nome do usuário em vez de dave e o nome do processo em que está interessado, em vez de ackermann.

 ps -eu dave | grep ackermann 

Agora que temos o PID, podemos usar isso com o renice. Vamos definir o ackermann de volta a um comportamento melhor com um bom valor de cinco. Para alterar o valor interessante de um processo em execução, você deve usar o sudo. Note que não há “-” no parâmetro 5. Você não precisa de um para números positivos e precisa apenas de um, não dois, para números negativos.

 sudo renice -n 5 2339 

Recebemos a confirmação de que o renice mudou o bom valor. Ele nos mostra o valor antigo e o novo valor.

O kernel geralmente faz um ótimo trabalho ao manipular prioridades e distribuir recursos de tempo e sistemas da CPU. No entanto, se você precisar executar uma tarefa longa com muita CPU e não se importar quando ela terminar, isso fará com que o seu computador funcione um pouco mais suavemente se você definir um valor mais alto para essa tarefa. Isso será melhor para todos.

Via: How to Geek

Nenhum comentário