임의의 프로세스가 차지할 수있는 RAM의 양을 제한하는 방법은 무엇입니까?


12

4GB의 RAM으로 실행되는 OS X 시스템이 있다고 가정 해 봅시다. 단일 프로세스가 3GB 이상을 차지하지 않도록 설정할 수 있습니까? 프로세스의 메모리 호그에 관계없이 시스템 응답 성을 유지하기 위해 항상 약간의 메모리가 남아 있습니까?


6
그리고 이것은 비생산적 일 것입니다. Micromanaging RAM 할당은 OS가 고안 한 것이 아닙니다. 사용 가능한 RAM이 RAM을 낭비합니다. OS X의 불량 RAM 관리로 인해 너무 많은 것이 있습니다. 활동 모니터를 닫고 인생을 즐기는 것이 가장 좋은 치료법 인 것 같습니다.

8
@cksum 귀하의 의견에는 방대한 일련의 가정이 있으며, 대부분 잘못된 것입니다. OS X의 메모리 관리를 뒷좌석 드라이브하려고하지 않습니다. 내가 실제로 하고있는 일은 쉽게 도망가는 프로세스로 바뀌는 코드를 테스트하면서 충분한 시스템 기능을 유지할 수있는 방법이 있는지 알아내는 것입니다. 무료 RAM은 RAM을 낭비하지 않기 때문에 오류를 해결할 수 있습니다.
Fomite

3
죄송합니다. 귀하의 질문이 응용 프로그램의 프로그래밍 (개발 및 테스트)과 관련이 있다면,이 포럼의 주제가 아닙니다. 하십시오 여기에 속하는 종류의 질문 사항에 대한 자세한 정보는 FAQ 봐 제발 apple.stackexchange.com/faq

10
FFS, 이것은 프로그래밍 문제가 아닙니다. OS 질문입니다. OS 레벨에서 Safari, Matlab, Call of Duty 등 임의의 프로세스가 사용할 수있는 메모리를 제한하는 것은 OS 질문입니다.
Fomite

7
본질적으로 가상 메모리에 관한 "애플 애호가 및 고급 사용자"질문을위한 사이트가되는 것은 분명 범위와 주제에 있습니다. 개발이 관련 되더라도 튜닝 또는 성능 문제에 유효합니다.
bmike

답변:


9

이와 비슷한 질문은 여기에 주목 내가 어떻게 제한 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

이것은 정답 일 것 같습니다. 다음에 실행할 때 시도해 보겠습니다. 지금은 대답을 받아들입니다.
Fomite

5

Mac에서 Lion (또는 최신 OSX) 서버를 실행중인 경우 해당 Mac의 VM (VirtualBox, Parallels 또는 VMWare 등) 내에서 OSX를 실행할 수 있습니다. VM을 3GB의 실제 RAM으로 제한하면 VM 내부의 모든 앱 또는 프로세스도 매우 제한됩니다. VM의 OS가 백업 스왑 디스크로 제한되거나 충돌하더라도 VM을 호스팅하는 시스템은 응답 상태를 유지해야합니다.

잠재적으로 런 어웨이 프로세스를 디버깅하는 경우 VM에 ssh하여 명령 행에서 디버거 또는 디버그 너브를 실행하고 항목이 잠길 때까지 로그 업할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.