3075 Views
Tempo de leitura: 3 MinutosO que é prioridade? Prioridade é uma medida de privilégio que algo ou alguém possui. Todo processo no Linux possui prioridades de CPU, Memória e Disco. Alguns possuem mais prioridades do que outros, ou seja, mais ou menos privilégios no consumo desses recursos.
<
p align=”justify”>Apesar do sistema determinar a prioridade padrão de cada processo, podemos especificar a quais processos queremos aplicar mais ou menos privilégios. Para isso, usamos os comandos nice, renice e ionice.
Saber como e quando utilizá-los é o “segredo de Tostines”. Veremos, a seguir, quando e como utilizar cada um deles. Vem comigo que você passa de ano.
Conceituando a syntax de nice e renice
Antes de começarmos, é interessante entendermos um conceito: O termo “nice” em inglês significa “legal“. Um processo “legal” para a CPU é aquele que não demanda maior prioridade.
A syntax dos comandos nice
e renice
são acompanhadas por números que vão de -20 à +20, onde “-20” significa menos legal, e “+20” significa “mais legal“. Um processo -20 tem maior prioridade, por isso é menos legal. Já o +20 é bem legal, e por isso tem menos prioridade.
Ou seja, aqui o bonzinho só se ferra.
Comando “nice”:
O comando nice nos permite especificar a prioridade de CPU e Memória com a qual um processo será iniciado. Ou seja, o processo iniciará com a prioridade que especificarmos e manterá essa prioridade até que seja finalizado.
O comando para isso seria:
nice prioridade comando
Exemplo:
nice -10 rm -f /tmp/*
Desta forma, o comando rm -f
será executado com prioridade “-10“. O limite é -20.
Comando “renice”:
O comando renice
é similar ao nice
. A diferença entre eles é que o renice
é utilizado em processos que já estão em execução.
A syntax dele é esta:
renice -10 -p PID
Exemplo:
renice -10 -p 25876
Desta forma, o processo cujo PID é 25876 passará para prioridade “-10“.
Observe que é preciso ter o número do PID para trocarmos a prioridade do processo.
Caso queiramos trocar a prioridade dos processos de um determinado usuário, podemos utilizar o parâmetro “-u” e especificarmos esse usuário. Exemplo:
renice -10 -u usuario
Com isso, todos processos desse usuário passarão para prioridade “-10“.
Comando “ionice”:
O comando ionice
atribui maior ou menor prioridade na leitura e escrita no disco. Ou seja, diferentemente de nice
e renice
, que trabalham com prioridade sobre CPU e Memória, o comando ionice
trabalha com prioridade de leitura e escrita no disco.
A syntax do comando é esta:
ionice -C prioridade -p PID
As possíveis prioridades são:
-
-c 3 = Iddle = Só executa se houver recurso livre;
-c 2 = Best-Enffort = Executa sem consumir muito recurso;
-c 1 = Real Time = Executa com prioridade máxima.
Exemplo:
ionice -c 3 -p 25876
ionice -c 2 -p 25876<
ionice -c 1 -p 25876
Exemplo de uso
Vou dar um exemplo de um case que usei apenas esses três comandos para solucionar um problema crítico de migração: O e-commerce de um cliente possuía dezenas de GB de dados e precisava ser migrado. Porém, a migração concorria com o consumo de CPU, Memória e Disco do servidor, deixando o site impraticavelmente lento.
Combinei o jogo com o cliente e migrei os dados usando rsync
com a seguinte prioridade:
08hrs as 18hrs | renice +19 e ionice -c3 |
18hrs as 00hrs | renice +0 e ionice -c2 |
00hrs as 08hrs | renice -19 e ionice -c1 |
A mudança de prioridade foi feita com um comando single-line que concatenava ps aux
para pegar os PIDs do rsync
e um laço com for
ou while
, não lembro agora, agendado no Crontab do sistema.
A migração “impossível” foi realizada em alguns dias sem afetar a performance do site do cliente.
Conclusão
Como dito anteriormente, o Linux gerencia a prioridade de processos da forma como ele, Linux, considera ser melhor para o sistema. Acontece que, as vezes, o melhor para o sistema não é melhor para nós, então a troca da prioridade de um processo se faz necessária. Com esses 3 comandos, como vimos anteriormente, podará gerenciar prioridades como bem entender. Só tome cuidado para não gerar sobrecargas desnecessárias.
Gostou do conteúdo?Assine nossa Newsletter e/ou feed RSS no menu lateral direito para receber materiais como este desenvolvidos por nós mesmos. |