A definição de um nível agradável mais alto para um processo é uma maneira eficaz de reduzir seu impacto na carga do sistema / tempo da CPU?


10

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


Para o rsync, seria mais eficaz usar seus comutadores para reduzir a compactação ou limitar o uso da largura de banda.
Nemo

Respostas:


9

Não reduzirá sua carga.

Ele permitirá que outros processos usem o tempo da CPU com mais frequência se houver uma possível contenção de recursos (vários processos "competem" pelo tempo disponível da CPU insuficiente).


9

Alterar o valor agradável não reduzirá diretamente a carga do sistema. No entanto, pode ser usado para deixar mais recursos disponíveis para os processos restantes, o que suspeito é o que você realmente deseja.

Em http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

O kernel decide quanto tempo do processador é necessário para um processo com base no bom valor. O intervalo de valor agradável possível é: -20 a 20. Um processo que tenha um valor agradável de -20 é uma prioridade muito alta. O processo que tem um bom valor de 20 é de prioridade muito baixa.

Portanto, sim, você deseja executar o trabalho cron em um nível mais alto que os outros processos, se quiser garantir que outros processos tenham prioridade.

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

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

Isso executará o script cron com uma nitidez aumentada em 10. Você provavelmente deseja 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 é bom trabalhar? e http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ para obter mais detalhes.


5

Alterar o bom nível de um processo provavelmente não afetará o valor da carga do sistema. O valor de carregamento do sistema é o comprimento médio da fila de execução , que é basicamente o número de processos que desejam usar a CPU.

Se você estiver executando um processo vinculado à 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, contribuirá com um valor de carga de 1,0 para o valor de carga do sistema. Não importa qual é o bom nível do processo, porque o comprimento médio da fila de execução não é afetado pela ordem dos processos na fila de execução.


Isso é importante lembrar. Se você executar muitos processos segmentados, a carga do sistema parecerá muito alta, mesmo que, de fato, nenhum trabalho real esteja sendo mais lento. Em alguns casos, o carregamento revela um problema real, ou seja, o Linux não pode permitir que o processo ordenado use todos os recursos que eles realmente poderiam usar sem problemas (todos eles ficam esperando a maior parte do tempo sem ganho).
Nemo

3

Você pode considerar três maneiras de reduzir o impacto de seus processos na carga do sistema / tempo da CPU:

  • Use o nicecomando para diminuir manualmente a prioridade da tarefa.
  • Use o cpulimitcomando para pausar repetidamente o processo para que ele não exceda um determinado limite.
  • Use o Linux built-in control groups, um mecanismo que instrui o planejador a limitar a quantidade de recursos disponíveis para o processo.

Recursos

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups


Você definitivamente deseja usar o cgroups para equilibrar os recursos do sistema. Isso permite particionar os recursos como você deseja (CPU, memória, E / S de disco, largura de banda do disco) e, em situações de baixa carga, até processos de "baixa prioridade" obtêm desempenho máximo, diferentemente dos truques no modo de usuário, que frequentemente acabam diminuindo o processo de baixa prioridade o tempo todo.
Mikko Rantalainen 17/03
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.