É possível atribuir uma prioridade legal e ionica a todos os scripts executados pelo daemon do cron?

3

Para ser um pouco mais concreto:

Eu tenho uma máquina Debian Squeeze Linux com uma aplicação web que deve estar disponível em todo o planeta. Até agora eu tinha um monte de cronjobs de consumo de recursos a cada noite (na Europa) sem muito impacto na experiência do usuário regional. No entanto, agora não posso permitir que o servidor fique mais lento a qualquer momento.

Existe uma maneira de forçar todos os scripts cron (cron.daily etc.) a herdar uma boa prioridade e ionica?

Obrigado por contribuir!

Miguel

    
por Miguel ZP 17.02.2013 / 16:41

3 respostas

2

Sim ...

Você pode fazer com que os scripts forneçam um conjunto específico de variáveis de ambiente ou apenas executar nice / ionice a partir do script ...

No entanto, esta não é uma boa solução para o seu problema.

  • Você pode compensar ou escalonar os scripts para que eles não disputem recursos?
  • Você entende o tempo ou os padrões de atividade do sistema? Por exemplo. Entre as 02:00 e as 04:00, há muito poucos usuários no sistema e é um bom momento para executar scripts de manutenção.
  • Você tem recursos suficientes no seu servidor?
  • nice e ionice não são boas soluções de longo prazo. ionice , na verdade, não afeta alguns dos algoritmos de escalonamento de kernel do Linux baseados em desempenho. Ele funciona com o Agendador CFQ , mas é provável que você queira usar o programador de prazos em um sistema de servidor. Isso pode ter um impacto maior do que tentar forçar o bom funcionamento dos processos.
por 17.02.2013 / 16:50
2

Você pode querer configurar o serviço crond para ser executado com bom desempenho e ionização já definida.

link

No entanto, eu não testei esse, então não posso garantir isso de uma forma ou de outra.

Se isso não funcionar, ou se não ajudar o suficiente, você precisará configurar os cgroups.

    
por 14.06.2014 / 00:01
0

Provavelmente, é melhor que essas tarefas do cron sejam executadas em um usuário do Linux separado, que você pode limitar a prioridade mais baixa. Digamos que você tenha esse usuário batchuser . No seu /etc/security/limits.conf , você gostaria de adicionar uma entrada para este usuário (-19 a 19, sendo 19 a prioridade mais baixa):

batchuser    -       priority        19

Então, qualquer processo iniciado por este usuário, seja do cron ou não, herdará essa prioridade. Nenhuma modificação para scripts, nenhum env ou perfis para definir.

link

    
por 14.06.2014 / 15:47