프로세스에 더 좋은 수준을 설정하면 시스템로드 / CPU 시간에 미치는 영향을 줄이는 효과적인 방법입니까? 작업이 있습니다.

서버로드를 추진하고 모니터 경고를 트리거하는 rsync cron 작업이 있습니다. 높은 수준으로 작업을 실행하도록 설정하면 시스템로드 값에 미치는 영향을 효과적으로 줄일 수 있습니까?



답변

부하를 줄이지 않습니다.

가능한 리소스 경합이있는 경우 다른 프로세스가 CPU 시간을 더 자주 사용할 수 있습니다 (사용 가능한 CPU 시간이 충분하지 않은 경우 여러 프로세스 “경쟁”).


답변

nice 값을 변경해도 시스템로드가 직접 감소하지는 않습니다. 그러나 나머지 프로세스에 더 많은 리소스를 제공하는 데 사용할 수 있습니다.

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

커널은 좋은 가치에 따라 프로세스에 필요한 프로세서 시간을 결정합니다. 가능한 좋은 값 범위는 -20 ~ 20입니다. 좋은 값 -20을 갖는 프로세스는 매우 높은 우선 순위입니다. 값이 20 인 프로세스는 우선 순위가 매우 낮습니다.

따라서 다른 프로세스가 우선 순위를 갖도록하려면 다른 프로세스보다 높은 레벨에서 cron 작업을 실행하려고합니다.

이렇게하려면 cron 스크립트를 다음과 같이 실행하십시오.

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

그러면 cron 스크립트가 nice에서 10 씩 증가합니다. 나머지 프로세스와 스크립트의 실행 시간 사이에 멋진 (pun 의도하지 않은) 균형을 찾기 위해 비트를 테스트하고 싶을 것입니다.

참조 좋은 방법이 작동? http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ 자세한 내용은.


답변

프로세스의 수준을 변경해도 시스템로드 값에는 영향을 미치지 않습니다. 시스템로드 값은 실행 큐평균 길이 이며 기본적으로 CPU를 사용하려는 프로세스 수입니다.

CPU 바운드 프로세스를 실행하는 경우 (rsync는 아니지만 예를 들어) 사용 가능한 프로세스가있을 때마다 항상 CPU 시간을 사용하려고합니다. 항상 실행되기를 원하므로로드 값 1.0을 시스템로드 값에 제공합니다. 실행 큐의 평균 길이는 실행 큐 의 프로세스 순서 에 영향을받지 않기 때문에 프로세스 수준이 중요하지 않습니다 .


답변

시스템로드 / CPU 시간에 대한 프로세스 영향을 줄이는 3 가지 방법을 고려할 수 있습니다.

  • nice명령을 사용하여 작업 우선 순위를 수동으로 낮추십시오.
  • cpulimit특정 제한을 초과하지 않도록 프로세스를 반복적으로 일시 중지 하려면 명령을 사용하십시오 .
  • built-in control groups스케줄러에게 프로세스에 사용 가능한 자원의 양을 제한하도록 지시하는 메커니즘 인 Linux를 사용하십시오 .

자원

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


답변