[apple] MacOSX의 비활성 메모리 이해 문제

MacOSX가 메모리를 관리하는 방법을 이해했다고 생각했지만 최근에는 성능으로 인해 당황했습니다. 상황은 다음과 같습니다.

  1. MacOSX 10.6.7을 실행하는 8GB의 실제 메모리가 장착 된 새로운 Core i7 시스템이 있습니다. Safari, Mail, Xcode, Terminal 등 일부 메모리를 정기적으로 사용하는 몇 가지 앱이 있습니다.
  2. 3 개의 64 비트 프로세스를 병렬로 실행해야하며 각 프로세스는 약 2000M의 실제 메모리를 사용합니다.
  3. 유선 메모리가 1000M 미만으로 유지되지만 (예 : 프로세스에 사용 가능한 7000M 이상), 페이징 활동이 많으면 시작한 세 가지 메모리 집약적 프로세스에서 성능이 매우 떨어집니다.
  4. 보고 된 비활성 메모리가 약 2500M을 유지하고 활성 메모리가 5000M을 초과하지 않기 때문에 사용 가능한 RAM이 부족하지 않습니다.

MacOSX가 왜 페이징에 의존하지 않고 필요한 프로세스에 대해 비활성 메모리를 해제하지 않는지에 대한 단서가 있습니까? 또한 시스템의 메모리 관리에 영향을 줄 수있는 적절한 방법이 있습니까?



답변

내 컴퓨터에서 Mac OS X이 올바른 페이지를 출력하는 데 약간 느리다는 것을 알았습니다.

특히 메모리가 굶주린 일을 할 때마다 종종 도움이되는 몇 가지 응용 프로그램을 종료합니다. Safari는 한동안 실행되어 온 응용 프로그램 목록의 최상위에있는 거대한 메모리 호그입니다. 필자의 경우 이것은 실제 RAM이 충분하지 않은 상태에서 VMWare Fusion을 실행하려고 할 때였습니다.

아마도 이것을 알고 있지만 OS X의 메모리 사용 및 가상 메모리를 설명하는 Apple 문서에 대한 링크는 다음과 같습니다.

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

다음은 제공되는 설명입니다. 비활성 목록에는 현재 실제 메모리에 상주하지만 최근에 액세스하지 않은 페이지가 있습니다. 이것이 의미하는 바를 정확하게 정의하기는 어렵지만 실제 비활성 메모리뿐만 아니라 파일 시스템 캐시도 포함하는 것 같습니다.

비활성 메모리는 대화 형 GUI 기반 OS에서 사용자가 언제든지 실행중인 응용 프로그램으로 전환하고 이러한 상황에서 응답 성을 제공하도록 선택할 수있는 처리하기 어려운 문제 일 수 있습니다. 그러나 그 단점은 당신과 같은 상황에서 OS는 옳은 일이 무엇인지 잘 모릅니다.

purge 명령 을 사용하여 비활성 메모리를 제거 할 수 있습니다 (일부) . CHUD 도구를 설치하여 설치해야하지만 이미 설치되어있을 수 있습니다. purge 명령을 사용하지 않았으므로 YMMV …

나는 조금 엉망으로 당신의 질문에 대답했을 수도 있고 아닐 수도 있습니다. 이 모든 것을 작성한 후, 나는 이 사이트에서 도움이 될만한 동일한 정보의 다른 질문을 발견했습니다 .


답변

MacOS 비활성 메모리를 해제하지만 실제로 필요한 경우에만 해제합니다. 이 “비활성 메모리”는 실제로 커널이 페이징 아웃 후보라고 생각하는 메모리 일 수 있지만, 아직 비활성 메모리를 참조하지 않고 더 많은 시간이 지날 때까지 결정하지는 않았습니다 (대신 메모리 페이징에 중점을두고 있습니다) 실제로는 곧 다시 사용되지 않을 것입니다). 이 경우 비활성 메모리를 “퍼지”하면 실제로 성능이 저하됩니다 (프로그램이 계속 실행되기 전에 자주 사용하는 페이지를 디스크에서 다시 읽어야하기 때문에).

purge개발자가 응용 프로그램의 시작 조건을 시뮬레이션하는 데 유용합니다 (예 : 부팅 또는 긴 중단 후 응용 프로그램을 처음 실행하는 데 걸리는 시간 확인). 일반 사용자 purge에게는 그다지 유용하지 않으며 실제로 일시적인 성능 저하를 유발합니다.


답변