검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : How to Limit The CPU Usage of Any Process in Linux
cpulimit 홈페이지 : http://cpulimit.sourceforge.net/

  cpulimit은 하나의 프로세서가 점유할 수 있는 최대 CPU 사용량을 제한하는 프로그램입니다. 아주 가끔가다가 이런 프로그램이 필요한 경우들이 있죠. 기본적으로 어느 배포판이든 사용 가능합니다. 우분투에서는 아래의 명렁어로 설치가 가능합니다.
sudo apt-get install cpulimit
  사용법도 정말 간단합니다. 제한하려는 프로세스의 PID를 찾고 최대 허용할 CPU 사용량을 정한 다음에 아래와 같은 명령어로 제한할 수 있습니다.
sudo cpulimit -p PID -l CPU
  PID에는 프로세스의 PID, CPU에는 제한할 백분률을 정수로 쓰면 됩니다.


  그리고 우분투 포럼에서 abcuser라는 사람이 이 프로그램을 활용하여 '프로세스들의 CPU 점유율을 모니터링하다가 특정 CPU 점유율을 넘는 프로세스를 감지하면 해당 프로세스를 제한 조치'하는 알흠다운 스크립트를 만들었다고 합니다. 스크립트에서 위의 cpulimit과 gawk를 사용한다고 하니 gawk도 깔아버립시다.
sudo apt-get install gawk
  스크립트는 여기서 받으시거나 위의 포럼 포스트에서 복사하시기 바랍니다. 스크립트는 총 2개로 프로세스들의 CPU 점유율을 감시하고 제한하는 cpulimit_daemon.sh와 시작과 종료를 제어하기 위해 /etc/init.d/ 디렉토리 안에 넣을 cpulimit 파일들로 구성되어 있습니다. cpulimit_daemon.sh 스크립트 내에는 아래의 4개 변수가 있습니다.
  • CPU_LIMIT : 각 프로그램의 최대 CPU 점유율입니다. 디폴트 값은 20(%)입니다.
  • DAEMON_INTERVAL : 스크립트가 시스템을 체크하는 시간 간격입니다. 디폴트 값은 3(초)입니다.
  • BLACK_PROCESSES_LIST : 이 변수에 있는 프로세스만 CPU 점유율을 제한합니다. 디폴트 값은 비어 있으며 그 경우 CPU_LIMIT에서 설정한 점유율을 넘기는 모든 프로세스에 대해 제한합니다. 여러 프로세스를 지정할 때는 파이프(|)를 구분자로 사용합니다.(예: mysql|firefox|gedit)
  • WHITE_PROCESSES_LIST : 이 변수에 있는 프로세스를 제외한 모든 프로세스의 CPU 점유율을 제한합니다. 위와 마찬가지로 디폴트 값은 비어 있으며 그 경우 위와 마찬가지로 CPU_LIMIT에서 설정한 점유율을 넘기는 모든 프로세스에 대해 제한합니다. 마찬가지로 여러 프로세스를 지정할 때는 파이프(|)를 구분자로 사용합니다.(예: mysql|firefox|gedit)
  참고로 BLACK_PROCESSES_LIST와 WHITE_PROCESSES_LIST를 모두 사용할 수는 없으며 둘 중 하나는 비어있어야 합니다.

  이제 설정이 끝났으면 설치 작업에 들어갑니다. 먼저 cpulimit_daemon.sh 스크립트 파일을 /usr/bin/ 디렉토리에 넣고 실행이 가능하도록 퍼미션을 변경합니다.
sudo mv ~/cpulimit/cpulimit_daemon.sh /usr/bin
sudo chown root:root /usr/bin/cpulimit_daemon.sh
sudo chmod 700 /usr/bin/cpulimit_daemon.sh
  그리고 cpulimit 스크립트 파일을 /etc/init.d/ 디렉토리에 넣고 오너와 퍼미션을 변경한 후 부팅 시 자동으로 실행하도록 만듭니다.
sudo mv ~/cpulimit/cpulimit /etc/init.d/
sudo chown root:root /etc/init.d/cpulimit
sudo chmod 700 /etc/init.d/cpulimit
sudo update-rc.d cpulimit defaults
  이제 아래의 명령어들을 통해 서비스를 제어할 수 있습니다.
sudo service cpulimit status   # cpulimit 데몬의 실행 여부 확인
sudo service cpulimit start    # cpulimit 데몬 실행
sudo service cpulimit stop     # cpulimit 데몬 종료

  마지막으로 지금까지 설치한 스크립트들은 아래의 명령어들을 통해 삭제할 수 있습니다.
sudo service cpulimit stop           # 삭제 전 cpulimit 데몬 중지
sudo update-rc.d -f cpulimit remove  # 심볼릭 링크 삭제
sudo rm /etc/init.d/cpulimit         # 데몬 제어 스크립트 삭제
sudo rm /usr/bin/cpulimit_daemon.sh  # 데몬 스크립트 삭제
  만약 cpulimit 프로그램과 gawk 프로그램까지 삭제하려면 아래의 명령어들을 실행합니다.
sudo apt-get remove cpulimit
sudo apt-get remove gawk
2010/10/30 16:04 2010/10/30 16:04