웹 서비스를 운영하다보면, 압축,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
'c or linux' 카테고리의 다른 글
c header 파일 (0) | 2011.04.18 |
---|---|
표준 출력을 fwrite, write로 구현하기 (0) | 2011.04.18 |
glibc 버젼 확인하기 (0) | 2011.02.22 |
리눅스 시간 동기 (0) | 2011.02.14 |
리눅스 버전 정보 확인 (아파치 버젼, 톰캣 버젼, 자바 버젼, 리눅스 버전) (0) | 2011.01.13 |