Como definir prioridades de processo com nice e renice no Linux

Conteúdo

Bash shell em um laptop Ubuntu

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

É tudo uma questão de procedimento

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 itens vitais do próprio Linux ou processos de suporte para seu ambiente de desktop gráfico.. Há muita coisa acontecendo nos bastidores. De qualquer forma, há tantos recursos do sistema e tempo de CPU para todos. O kernel Linux é o controlador de todos esses processos.

É o kernel que deve escolher quais processos recebem atenção e recursos no momento, e quais têm que esperar. O kernel continuamente manipula processos e prioridades para garantir que o computador funcione da forma mais suave possível e que todos os processos sejam devidamente ativados. Alguns processos recebem tratamento preferencial. Eles são tão importantes para o funcionamento geral do computador que as suas necessidades devem vir em primeiro lugar, Digamos, seu navegador.

Bom valor

Um dos critérios usados ​​para estabelecer como o kernel trata um procedimento é o valor agradável. Cada procedimento tem um bom valor. O valor legal é um número inteiro no intervalo de -19 uma 20. Todos os processos padrão começam com um bom valor de zero.

O truque aqui é que quanto maior o valor legal, melhor será o seu procedimento para o de outros Processos. Em outras palavras, um bom valor alto diz ao kernel que este procedimento fica feliz em esperar. Um número negativo é o oposto de ser legal. Quanto maior o valor negativo agradável, mais egoísta O processo é. Você está tentando obter o máximo de tempo de CPU possível, sem prestar atenção aos outros processos.

Podemos usar o nice comando para colocar bom valor quando um o processo começa e podemos usar renice para ajustar bom valor de um processo em execução.

O bom comando

Podemos usar o nice comando para ajustar o valor legal de um programa quando o lançamos. Isso nos permite aumentar ou diminuir a prioridade que o kernel dá ao procedimento, em conexão com os outros processos.

Suponha que um programador tenha escrito um programa chamado ackermann . Isso calcula Funções de Ackerman. É um processo intensivo de CPU e memória. O programador pode iniciar o programa com o seguinte comando:

./Ackermann

Comando ackermann na janela do terminal

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

principal

mais rodando em um terminal

Podemos ver os detalhes do ackermann programa em top. O bom valor é a figura na "coluna NI". Foi zerado como poderíamos esperar.

Vamos reiniciar e desta vez vamos torná-lo menos exigente. Vamos definir um bom valor de 15 para o ackermann agende como segue. Escreva bem, um espaço, -15, outro espaço e depois o nome do programa que deseja iniciar. Em nosso exemplo, nosso programador fictício está usando ./ackermann.

legais -15 ./Ackermann

Bom comando 15 na janela do terminal

Tenha cuidado, a “-15” Não é menos quinze. São quinze positivos. o “-” é necessário indicar nice estamos passando um parâmetro. Para indicar um número negativo, você deve digitar dois caracteres “-“.

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

principal

mais rodando em um terminal

Com um bom valor de 15, ackermann não consome a maior parte do tempo da CPU. GNOME e Rhythmbox estão usando mais. Nós reinamos ackermann daqui a pouco.

Agora vamos fazer o oposto e dar 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 sudo. Qualquer pessoa pode tornar seu aplicativo mais agradável, mas apenas superusuários podem tornar um mais egoísta.

sudo legal --10 ./Ackermann

agradável -10 comando na janela do terminal

Vamos correr escada acima e ver que diferença isso fez.

principal

mais rodando em um terminal

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

O comando renice

a renice O comando nos permite ajustar o valor agradável de um procedimento em execução. Não precisamos parar e reiniciá-lo com nice. Podemos determinar um novo valor rapidamente.

a renice o comando leva o id do procedimento, o PID, do procedimento como um parâmetro de linha de comando. Podemos extrair o ID do procedimento da coluna “PID” sobre top , o podemos utilizar ps e grep para encontrar para nós, na próxima maneira. Evidentemente, você escreverá seu nome de usuário em vez de dave e o nome do procedimento no qual você está interessado em vez de ackermann.

ps -eu dave | aperto ackermann

Agora que temos o PID, podemos usá-lo com renice. Vamos determinar ackermann de volta ao comportamento mais agradável com um bom valor de cinco. Para alterar o valor legal de um procedimento em execução, deve usar sudo. Por favor, note 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 bom valor mudou. Mostra-nos o valor antigo e o novo valor.

O kernel em geral faz um ótimo trabalho de gerenciamento de prioridades e alocação de tempo de CPU e recursos do sistema. Mas se você tiver que executar uma tarefa longa que consome muita CPU e você não se importar quando terminar, fará com que o seu computador funcione um pouco mais suavemente se você definir um valor mais alto para essa tarefa. Isso vai ser melhor para todos.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.