Alterando a prioridade de processos

Started by insanity, 27 de July , 2006, 06:00:58 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

insanity

Alterando a prioridade de processos
 ===================================

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

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 COMANDO [ARGUMENTOS]


Sendo que:

: 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 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 [[-p] PID...] [[-g] PROCESS_GROUP...] [[-u] USER...]


O campo 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!