4GB의 RAM으로 실행되는 OS X 시스템이 있다고 가정 해 봅시다. 단일 프로세스가 3GB 이상을 차지하지 않도록 설정할 수 있습니까? 프로세스의 메모리 호그에 관계없이 시스템 응답 성을 유지하기 위해 항상 약간의 메모리가 남아 있습니까?
4GB의 RAM으로 실행되는 OS X 시스템이 있다고 가정 해 봅시다. 단일 프로세스가 3GB 이상을 차지하지 않도록 설정할 수 있습니까? 프로세스의 메모리 호그에 관계없이 시스템 응답 성을 유지하기 위해 항상 약간의 메모리가 남아 있습니까?
답변:
이와 비슷한 질문은 여기에 주목 내가 어떻게 제한 RAM 맥 OS 응용 프로그램 캔 사용량?
ulimit 명령을 사용하는 것이 좋지만 원하는 양만 성공적으로 제한 할 수 없었습니다. 그들이 겪은 문제는 -u 또는 -v 옵션이 메모리 페이징 시스템을 고려하지 않았기 때문에 발생했다고 생각합니다. 예를 들어 실제 RAM에서 처리하기 위해 X 공간을 할당 할 수는 있지만 페이지를 넘길 수는 있습니다. 하루 종일 가상 메모리를 사용합니다.
이것은 위험한 가상 메모리 비활성화 일 수 있습니다. RAM이 부족할 때 Mac이 잠기 게 될 수 있습니다.
이 설정에주의를 기울이거나 언급하지 않은 경우 ulimit 매뉴얼 페이지에 언급 된대로 ulimit 인수를 사용하여 ulimit를 실행하여 OS까지 실행하십시오.
ulimit : ulimit [-SHacdefilmnpqrstuvx] [제한]
쉘 자원 한계를 수정하십시오.
쉘이 사용할 수있는 자원을 제어하고 그러한 제어를 허용하는 시스템에서 쉘이 작성하는 프로세스를 제어합니다.
OS X이 ulimit를 무시하는지 여부를 확인하지만 참조 된 ulimit가 실패한 후 확인하는 명확한 소스를 찾을 수 없습니다.
ulimit 자체를 필요에 맞게 사용할 수 있다면 ulimit를 사용하지 않거나 가상 메모리를 사용하지 않도록 설정하면 선택한 프로세스에 대해 3GB 제한을 설정할 수 있습니다. 참고 로 Snow Leopard System 10.6에서 가상 메모리 를 완전히 비활성화하는 방법에 대한 자세한 내용은 다음 링크를 참조하십시오.
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
Mac에서 Lion (또는 최신 OSX) 서버를 실행중인 경우 해당 Mac의 VM (VirtualBox, Parallels 또는 VMWare 등) 내에서 OSX를 실행할 수 있습니다. VM을 3GB의 실제 RAM으로 제한하면 VM 내부의 모든 앱 또는 프로세스도 매우 제한됩니다. VM의 OS가 백업 스왑 디스크로 제한되거나 충돌하더라도 VM을 호스팅하는 시스템은 응답 상태를 유지해야합니다.
잠재적으로 런 어웨이 프로세스를 디버깅하는 경우 VM에 ssh하여 명령 행에서 디버거 또는 디버그 너브를 실행하고 항목이 잠길 때까지 로그 업할 수 있습니다.