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


10

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


rsync의 경우 스위치를 사용하여 압축을 줄이거 나 대역폭 사용을 제한하는 것이 더 효과적입니다.
— 니모

답변:


9

부하를 줄이지 않습니다.

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


9

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/ 자세한 내용은.


5

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

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


이것은 기억해야합니다. 멋진 프로세스를 많이 실행하면 실제로 실제 작업 속도가 느려지지 않더라도 시스템로드가 매우 높아 보입니다 . 어떤 경우에는로드가 실제 문제를 드러냅니다. 즉, Linux가 niced 프로세스가 문제없이 실제로 사용할 수있는 모든 자원을 사용할 수 없게한다는 것입니다.
— Nemo

3

시스템로드 / 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


cgroup을 사용하여 시스템 리소스의 균형을 유지하려고합니다. 따라서 원하는대로 리소스를 분할 할 수 있고 (CPU, 메모리, 디스크 IO, 디스크 대역폭)로드가 적은 상황에서도 "낮은 우선 순위"프로세스조차도 항상 낮은 우선 순위 프로세스 속도를 늦추는 사용자 모드 트릭과 달리 최대 성능을 얻습니다.
— Mikko Rantalainen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.