Está definindo um nível mais alto para um processo, uma maneira eficaz de reduzir seu impacto no carregamento do sistema / tempo de CPU?

11

Eu tenho uma tarefa cron do rsync que está empurrando a carga do servidor e acionando alertas do monitor. Se eu definir o trabalho para ser executado com um alto nível legal, isso efetivamente reduziria o impacto que ele tem nos valores de carga do sistema?

    
por Gregg Leventhal 17.12.2013 / 21:09

4 respostas

9

Não reduzirá sua carga.

Ele só permitirá que outros processos usem o tempo de CPU com mais freqüência se houver uma possível contenção de recursos (vários processos "competindo" por não haver tempo suficiente de CPU disponível).

    
por 17.12.2013 / 22:40
9

Alterar o valor interessante não reduzirá diretamente a carga do sistema. Pode, no entanto, ser usado para deixar mais recursos disponíveis para os processos restantes, o que eu suspeito é o que você realmente quer.

Em link

Kernel decides how much processor time is required for a process based on the nice value. Possible nice value range is: -20 to 20. A process that has a nice value of -20 is very high priority. The process that has a nice value of 20 is very low priority.

Portanto, você deseja executar a tarefa cron em um nível mais alto do que os outros processos, se quiser garantir que outros processos recebam prioridade.

Para fazer isso, você quer que seu script seja executado assim:

/bin/nice -n 10 /path/to/cron-script

Isto irá executar o cron cronograma com nicenesse aumentado em 10. Você provavelmente vai querer testar um pouco para encontrar um bom equilíbrio (trocadilho não intencional) entre os processos restantes e o tempo de execução do script.

Veja também Como funciona? e link para mais detalhes.

    
por 17.12.2013 / 21:31
5

É improvável que alterar o bom nível de um processo afete o valor de carregamento do sistema. O valor de carga do sistema é o comprimento médio da fila de execução , que é basicamente o número de processos que querem usar a CPU.

Se você estiver executando um processo limitado pela CPU (o rsync não é, mas apenas por exemplo), ele sempre desejará usar o tempo da CPU sempre que houver algum disponível. Como ele sempre deseja executar, ele contribuirá com um valor de carga de 1.0 para o valor de carregamento do sistema. Não importa qual é o nível bom do processo, porque o comprimento médio da fila de execução não é afetado pela ordem de processos na fila de execução.

    
por 17.12.2013 / 22:10
2

Você pode considerar três maneiras de reduzir o impacto do seu processo no carregamento do sistema / tempo de CPU:

  • Use o comando nice para diminuir manualmente a prioridade da tarefa.
  • Use o comando cpulimit para pausar o processo repetidamente para que ele não exceda um determinado limite.
  • Use o built-in control groups do Linux, um mecanismo que informa ao agendador para limitar a quantidade de recursos disponíveis para o processo.

Recursos

link

    
por 02.04.2015 / 11:50