[Linux] cpulimit 으로 특정 프로세스 CPU 점유율 제한 Develop Tip

최근에는 거의 대부분의 hot 한 오픈소스가 github에서 관리가 되고 있는데 반해 
아직까지 소스포지에 남아있는 오픈소스도 있더군요.

그 중에서 cpulimit 이라는 것이 있습니다.

소스가 아주 간단히 되어 있다 하네요...
기본 개념으로는 현재 돌고 있는 특정 Process를 보고 있다가 특정 임계치를 넘게 CPU를 사용하고 있으면
SIGSTOP 시그널을 보내 잠시 멈추게 하였다가 다시 SIGCOND 시그널로 지속하도록 하는 것을 반복하여
지정된 CPU 사용율로 낮추도록 한다는 아주 간단한 개념의 프로그램 이었습니다.

실제로 537줄의 C 프로그램과 Makefile 로 구성되어 있습니다.

하지만 잘 사용하면 좋은 서버 프로그램 관리를 할 수 있겠습니다.

cpulimit --pid 2960 --limit 55

위와 같이 실행시키면 해당 2960 pid를 가진 프로세스의 CPU 점유율을 55%로 제한하는 것입니다.

만약 특정 데몬이 급한 시간을 요하지는 않지만 너무 많은 CPU를 점유하여 시스템에
문제가 생길 때 위와 같이 제한을 걸도록 하여 다른 문제가 생기는 것을 막을 수 있지 않을까 싶습니다.

다만 한가지 염려되는 부분은 SIGSTOP 및 SIGCOND 시그널이 해당 커널에서 maskable 인지 non-maskable
인지에 따라 혹시라도 어떤 데몬 프로그램이 위의 시그널을 자신의 것으로 masking 시켜 버렸다면
원하지 않는 결과가 발생할 수 있기도 하겠군요.

이것은 실제로 잘 CPU 조절이 되는지 확인을 해 보면 될 것 같습니다.


어느 분께는 도움이 되셨기를...

핑백

  • 지훈현서 : [macOS] docker kubernetes 활성화시 CPU 점유율 문제 2018-10-11 11:23:59 #

    ... 인 것 같습니다. (이 글을 쓰는 2018년 10월 11일 현재) 그러다가 우선은 다른 방법으로 CPU 점유율을 제한하는게 어떨까 생각이 들었습니다.예전 리눅스에서 CPU 제한을 살펴본 것 처럼 살펴보니, cputhrottle 이라는 유틸이 있더군요.헌데 com.docker.hyperkit 프로세스의 PID를 찾아 제한을 걸 ... more

덧글

댓글 입력 영역

구글애드텍스트