나는 이런 상황에 여러 번 직면했습니다. 특정 프로그램이 무한 루프에 들어가 전체 시스템이 완전히 응답하지 않게 된 적이 있습니다. 한번은 외부 JavaScript가 있어서 종료해야 했습니다. 이는 용납할 수 없는 일이므로 프로세스의 CPU 사용량을 제한하고 싶습니다. 을 사용하는 것이 limits.conf
당연해 보이지만 단위는 이라고 되어 있습니다 max CPU time (MIN)
. 하지만 제가 아는 한, CPU 시간은 CPU가 작업을 수행하는 데 소비하는 시간이며, 이 경우 전체 시간 프레임은 알 수 없습니다. 1 CPU 분 제한은 무엇을 의미합니까? (참고로, ulimit
단위는 초라고 주장하는데, 이는 더 많은 혼란을 야기합니다...) 그렇다면 "어느 시점에서든 어떤 프로세스가 CPU의 절반 이상을 사용하도록 허용하지 않습니다"와 같은 것을 적시에 어떻게 설정합니까? "
답변1
그렇게 할 수는 없습니다 ulimit
. 프로세스를 일시 중지하고 일시 중지를 해제하여 이를 수행하는 도구가 있습니다( cpulimit
). 운영 체제의 일부, 데비안의 일부일 수 있지만 기본적으로 설치되지는 않습니다. 커널 네임스페이스도 있습니다. 하지만 꼭 이렇게 할 필요는 없습니다. 유닉스는 이런 상황에서 잘 작동한다. nice를 사용할 수도 있지만 필요한 상황은 거의 보이지 않습니다. 문제는 교환과 같은 다른 원인으로 인해 발생할 수 있습니다.