você está aqui: Home  → Arquivo de Mensagens

Alterando a prioridade de processos

Colaboração: Sérgio Durigan Júnior

Data de Publicação: 26 de Julho de 2006

Algo muito recorrente quando se usa algum sistema *NIX é alterar a prioridade de processos sendo executados. Isso pode ser feito com o comando "nice" ou "renice".

1. Os números de prioridade

O Linux (por exemplo) trabalha com números de prioridade que vão de -20 a +20. A regra é simples e inversamente proporcional: quanto menor o número, maior sua prioridade. Ou seja, se o seu processo deve ter prioridade alta, coloque um valor baixo, como por exemplo -10.

Por motivos óbvios de segurança, usuários normais podem alterar a prioridade de seu processo somente de 0 a 20. O root pode alterá-la para qualquer valor aceitável.

2. O comando "nice"

A sintaxe do comando é simples:

  #> nice -n <PRIORIDADE> COMANDO [ARGUMENTOS]

Sendo que:

<PRIORIDADE>: Refere-se ao número citado acima, de -20 a 20 para o root, de 0 a 20 para usuários normais;

COMANDO: É o comando ao qual a <PRIORIDADE> será aplicada.

[ARGUMENTOS]: São os argumentos do COMANDO, caso sejam necessários.

Após executado, você pode verificar a prioridade de seu comando digitando:

  #> top

O campo "NI" refere-se ao número setado pelo "nice". Repare que vários programas do sistema utilizam números diferentes de prioridade. Repare também que, caso você não use o comando "nice" (o que acontece na maioria dos casos), a prioridade assumida por padrão é a "0"; vários programas da listagem do "top" provavelmente devem ter essa prioridade.

3. Ops, esqueci! Alterando a prioridade "on-the-fly"

Algo muito comum é perceber só depois de um tempo que seu programa requer mais atenção... E então, como alterar a prioridade?? Pra isso existe o utilitário "renice". Sua sintaxe é a seguinte:

  #> renice <PRIORIDADE> [[-p] PID...] [[-g] PROCESS_GROUP...] [[-u] USER...]

O campo <PRIORIDADE> já foi explicado acima. Os outros são:

PID: PID do processo que se quer mudar a prioridade

PROCESS_GROUP: Grupo dos processos que se quer mudar a prioridade

USER: Dono dos processos que se quer mudar a prioridade

Por exemplo, o comando:

  #> renice -10 -u root

Altera a prioridade de todos os processos cujo dono é o root.

Note que não é necessário passar nenhum parâmetro para indicar o número da prioridade, como era necessário em "nice". Além disso, o padrão do "renice" é reconhecer PID's. Por isso, também não é necessário passar o argumento "-p":

  #> renice -10 923

Mudaria a prioridade do processo 923 para -10.

4. Conclusão

Os comandos "nice" e "renice" mostram-se muito úteis em diversas situações, principalmente naquelas em que o desempenho e a rapidez são essenciais. No entanto, seu uso deve ser ponderado, uma vez que ao mudar a prioridade de um processo para "-20" ou algum valor próximo a isso o sistema torna-se extremamente lento. Recomendo que se realize um teste com algum comando simples antes de se aventurar para algo que possa causar dores de cabeça ;-).

Mais informações podem ser encontradas nas respectivas páginas de manuais dos comandos. Boa sorte!



Veja a relação completa dos artigos de Sérgio Durigan Júnior

 

 

Opinião dos Leitores

Luís Eduardo
23 Jul 2013, 11:08
Pelo que reparei o número de prioridade do nice muda com o tipo de sistema. Ex: Em sistemas Debian, o número varia entre -20 e 19(http://www.debian.org/doc/manuals/debian-reference/ch09.pt.html#_the_scheduling_priority). Já entre sistemas Red Hat, o número varia entre -20 e +20 (http://www.redhat.com/mirrors/LDP/LDP/GNU-Linux-Tools-Summary/html/controlling-processes.html).

Parece haver alguma controvérsia entre o número padrão de nice. Pelo que vi alguns afirmam ser 0, outros afirmam ser 10
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script