nice renice e ionice

2

Li sobre nice renice e ionice para controlar a prioridade de agendamento de processos em execução. No entanto, ainda não entendo quando e como eles são úteis. Por exemplo, fazendo algo como:

nice -n 13 pico myfile.txt
    
por Jeffrey Darrow 13.12.2010 / 00:34

2 respostas

4

No que diz respeito ao pico, é improvável que seja um motivo de preocupação, por isso não é o tipo de comando que você normalmente faria com nice / renice ou ionice. No entanto, o seu comando executaria pico ajustado para +13. O que significaria que seria significativamente menos tempo alocado para ele. Por exemplo, seguindo da sua linha pico. Normalmente o pico executado se parece com isto:

UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S     ADDR TTY           TIME CMD
501 20118 20117     4006   0  31  0  2435548   1068 -      S     eb577e0 ttys000    0:00.03 -bash
501 20136 20118     4006   0  31  0  2434992    772 -      S+    85eed20 ttys000    0:00.00 pico

Onde o NI é o nível bom. Se eu correr pico com o seu comando, é assim:

UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S     ADDR TTY           TIME CMD
501 20118 20117     4006   0  31  0  2435548   1068 -      S     eb577e0 ttys000    0:00.03 -bash
501 20179 20118     4006   0  18 13  2434992    904 -      SN+   85eed20 ttys000    0:00.01 pico

OK, para demonstrar que a linha de comando executada é efetiva, mas o que ela realmente faz? OK, digamos que você tenha um sistema bastante ocupado, mas não obsceno. É bastante movimentado o tempo todo, à meia-noite, uma tarefa de manutenção essencial é iniciada. É a linha de comando do mysql que executa um script para gerar algumas estatísticas diárias. Há muito processamento, o que faz com que a CPU chegue muito e os usuários se queixam disso. Com veemência, como eles fazem. O que você pode fazer sobre isso?   Não é essencial o tempo que esse script leva para que você coloque 'nice -n 13' no comando e, da próxima vez que for executado, isso não afetará tanto os usuários, mas demorará um pouco mais para ser concluído. O dono do script MySQL não se importa, pois ele só quer as estatísticas quando chegar no dia seguinte. Todo mundo está feliz.

As histórias à parte dessas ferramentas podem permitir que você exerça algum controle sobre como o sistema prioriza o tempo de CPU (possivelmente IO no caso de ionização) alocado para as tarefas. Eles só terão efeito quando o sistema for carregado, antes que todas as tarefas sejam alocadas o tempo todo necessário.

O comando renice funciona de maneira muito semelhante, mas permite alterar a prioridade dos processos que já estão em execução. Então, na anedota acima, você poderia usar o renice para alterar a prioridade do comando mysql sem reiniciá-lo. O seguinte comando renegaria todas as tarefas em execução chamadas 'mysql' para +13, uma prioridade muito menor:

renice -n 13 -p 'pidof mysql'

Quanto ao ionice, não posso comentar, mas acho que permite fazer coisas semelhantes com o IO. Influenciar o quanto io certas tarefas conseguem realizar, por ex. disco de leitura / gravação. Poderia ser útil no processo de otimização de backup, se necessário?

    
por 13.12.2010 / 01:04
2

ionice é uma interface para o subsistema do escalonador de E / S do kernel do Linux, permitindo a configuração de prioridades de E / S em uma base por processo. O caso de uso disso seria algo como reduzir a prioridade do comando updatedb que constrói o banco de dados para o comando locate de uma maneira que outro IO está sendo executado não perturbado, já que o updatedb só faz IO quando nenhum outro IO é atualmente em execução.

    
por 13.12.2010 / 01:07