프로세스로 인해 컴퓨터가 "정지"될 수 있습니다(예: CPU 또는 스왑 공간 부족). 이런 일이 발생하지 않도록 하는 방법이 있나요? 예를 들어 프로세스에 부여할 수 있는 최대 %CPU 또는 IO MB/s를 설정하면 될까요?
답변1
셸에서 실행되는 명령에 대해서는 의 셸 설명서를 읽어보세요 ulimit
.
ulimit()
C에도 같은 일을 하는 함수가 있습니다 .
구현별 메서드를 통해 다양한 제한 사항을 적용할 수도 있습니다. FreeBSD에서는 에서 login.conf
또는 라는 명령을 사용하여 사용자별 제한을 설정할 수 있습니다 rctl
. 일부 Linux 배포판에서 사용됩니다 limits.conf
.
cpulimit
시간이 지남에 따라 특정 양의 CPU를 사용하지 않도록 프로세스를 일시 중지할 수 있는 프로그램이 있습니다 .
물론 우선순위를 조정하려는 경우에는 항상 nice
합계가 있습니다.renice
답변2
부분적으로. ulimit
일반적으로 쉘 도우미 명령이 무엇인지 확인하십시오 . (배쉬에서는 help ulimit
). 메모리, 총 CPU 주기 및 시간(%는 아님), 작성하는 파일 크기를 제한할 수 있습니다.
이 명령을 사용할 수도 있습니다 nice
. 하지만 실제로 자원이 필요한 다른 일이 없다면 nice는 효과적이지 않습니다. 여러 프로세스가 CPU 리소스를 놓고 경쟁하는 경우에만 적용됩니다.
Linux에서 할 수 있는 한 가지는 메모리가 부족할 때 프로세스를 먼저 종료해야 한다고 OOM Killer에 지시하는 것입니다.