웹 서비스를 운영하다보면, 압축,rsync 때문에 웹 서비스에 영향을 줄 수 있다.
따라서, 이런 경우에 대해서 적절하게 cpu 사용량을 정할 수 있는 툴이 있다!!!

cpu limit 이라는 툴인데. 소스 하나, make 파일 하나밖에 없다.
다운로드는 여기서한다. (홈페이지 http://cpulimit.sourceforge.net/)

wget http://downloads.sourceforge.net/project/cpulimit/cpulimit/cpulimit/cpulimit-1.1.tar.gz?r=&ts=1301401588&use_mirror=cdnetworks-kr-1

make 하면, cpulimit 이라는 파일이 생성된다.


파일 내부를 보면, 아주 간단하다. /proc 파일을 모니터링하고, SIGSTOP, SIGCONT만 이용해서 만든 간단함!!!! 깜짝 놀랬다.  (역시 도전하는 사람은 아름다워~)
goto문 쓰는 황당한 소스이다. 나중에 내가 예쁘게 고쳐봐야겠다~


사용법은 pid 별로, 명령어별로 다 가능하다고 하는데. 명령어단위로는 잘 못찾는 것 같다. 대신 pid를 넣으면 잘 동작한다..



cpu를 겁나게 많이 쓰는 것을 하나 만든다.
gzip -9 </dev/zero >/dev/null  &
978

그리고, pid가 978인거 확인하고, cpulimit을 돌린다.
cpulimit -p 978 -l 10 &


추세를 확인해본다..
바로 내려가는게 아니라, 천천히 내려간다. 좋은 발견임~^^


[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9           100   847   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          96.3   899   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          71.1   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          61.4   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          59.5   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          57.8   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          56.0   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          36.4   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          35.6   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          33.6   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          31.0   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          24.3   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          19.1   978   0
[root@cpulimit-1.1]# ps -C gzip o cmd,%cpu,pid,ni
CMD              %CPU   PID  NI
gzip -9          17.5   978   0


Posted by '김용환'
,