“비활성 메모리”가 많은 경우 OS X에서 스왑을 사용하는 이유는 무엇입니까? 8GB가 있으며 거의 ​​매일 거의 다가옵니다.

몇 달 동안 OS X를 사용하고 있습니다 (Lion 및 현재 Mountain Lion). 내 미니에 8GB가 있으며 거의 ​​매일 거의 다가옵니다. 8GB의 Windows 7 컴퓨터에서는 그런 종류의 문제가 없었습니다. 어쨌든, 인터넷을 통해 비활성 메모리가 최근에 닫히고 더 빨리 다시 여는 데 사용할 수있는 프로그램의 앱 캐시라는 것을 읽었으며 필요한 경우이 비활성 메모리를 새 앱으로 해제 할 수 있습니다. 릴리스되지 않습니다. 대신 OS X이 교환을 시작합니다. 제 질문은 “비활성 메모리”가 많을 때 OS X이 스왑을 사용하는 이유입니다. 여기에 무슨 뜻인지 보여주는 화면이 있습니다 :

여기에 이미지 설명을 입력하십시오

나는 스와핑을 시작하기 전에 OS X가 2.69GB를 사용할 수있는 공간이 있기를 정말로 희망합니다.



답변

비활성 RAM 페이지가 실제로 활성화되었을 때 스와핑이 발생했습니다.

( 업데이트 : 의견에서 명확하게 지적 되었 듯이, 이것은 귀하의 경우가 아닙니다. 따라서 동일한 문제를 가진 사람들 은 수평 규칙으로 건너 뛸 수 있습니다 .)

즉, 많은 프로그램이 실행 중이고 커널이 일부 페이지를 교체했습니다. 그런 다음 일부 프로그램을 종료했습니다. 커널은 RAM 페이지를 비활성으로 표시합니다. 그러나 이러한 페이지가 필요할 때까지 페이지를 RAM으로 다시 스왑하지 않습니다. 이로 인해 비활성 페이지와 스왑 아웃 페이지가 모두 생깁니다.

왜 사전에 페이지를 교환하지 않습니까? 그것이 배당률에 베팅 할 것이기 때문에 장기적으로 당신은집니다. 간단한 예를 생각해 봅시다 : 동시에 RAM에 맞지 않는 두 개의 프로그램 A와 B. 프로그램 A가 여전히 실행 중이고 교체 된 모든 페이지가 A에 속합니다. 프로그램 B가 종료되었고 모든 비활성 페이지가 B에 속합니다.

커널이 A의 페이지를 사전에 스왑 인하 고 즉시 다음과 같은 경우 :

  • 프로그램 A는 페이지에 액세스해야합니다-> 당신이이기십시오-페이지는 이미 RAM에 있습니다.
  • 당신은 B를 다시 시작한다-> 당신은 잃어버린다-당신은 페이지를 RAM으로 가져 오는 데 드는 비용을 “지불”했다.
  • 다른 프로그램을 시작합니다. C-> A와 C가 동시에 RAM에 맞지 않으면집니다. 그들이 맞다면, 당신은 짝수입니다.

또한 스왑 아웃 (디스크에 쓰기)이 스왑 인 (디스크에서 읽기)보다 비용이 많이 든다는 점도 고려하십시오. 이 “베팅”을 더욱 어렵게 만듭니다.

한마디로 : 커널을 신뢰하고 현명하게하려고하지 마십시오.


업데이트 : 활동 모니터를 사용하여 시스템 메모리 읽기 기사를 통해 많은 사람들이 메모리 가 작동한다고 믿기 때문에
비활성 메모리가 작동하지 않는 것으로 나타났습니다 . 비활성 메모리에 대한 기사에 제공된 정의가 정확합니다.

이 정보는 RAM에 있지만 활발하게 사용되고 있지 않으며 최근에 사용되었습니다.

그러나 다음 예제는 완전히 오도되고 지나치게 단순화되었습니다 (내 예제가 솔직한 것처럼).

예를 들어, Mail을 사용한 후 종료 한 경우 Mail에서 사용중인 RAM이 비활성 메모리로 표시됩니다. 비활성 메모리는 사용 가능한 메모리와 마찬가지로 다른 응용 프로그램에서 사용할 수 있습니다. 그러나 다른 응용 프로그램에서 비활성 메모리를 사용하기 전에 Mail을 열면 비활성 메모리가 느린 드라이브에서로드되지 않고 활성 메모리로 변환되므로 Mail이 더 빨리 열립니다.

더 많은 온라인 리소스를 검색 하여 다윈 커널 메일 링리스트 에서이 스레드 를 찾았습니다 . 짐 매기 인용 (다윈 팀의 생각-)

간단히 말해 커널 VM 시스템은 사용중인 페이지를 통한 메모리 압력 스캔을 처리 할 때 활성 및 비활성 표시 사이의 균형을 유지하려고합니다. 비활성 페이지는 비활성으로 표시되어있는 동안 재사용을 위해 스캔됩니다. 재사용 된 페이지는 활성으로 표시되며 일부 다른 페이지는 활성 상태에서 비활성 상태로 이동하여 활성 상태인지 감지해야합니다. 따라서 비활성은 잘못된 이름입니다. “비활성 상태 일 수 있습니다.이를 확인하십시오.”

아시다시피, 현재 (현재) 노력하는 내부 잔액은 약 2/3 활성 대 1/3 비활성입니다 …

관찰 한 동작에 대해 설명합니다. 즉, 비활성 페이지는 최근에 사용되지 않은 실행중인 프로그램에 속합니다. 따라서 새 프로그램을 시작하면 비활성 페이지가 교체됩니다. 동시에 다른 프로그램의 페이지는 비활성 대 비활성의 2/1 비율을 유지하기 위해 비활성으로 표시됩니다.

스레드는 또한 다윈의 내부에 대한 자세한 내용은 몇 가지 제안이 포함되어 있습니다. 비치 볼 문제 (일반적으로 메모리 관련이 거의 없음)로 인해 메모리 사용량 조사를 시작한 경우에도 몇 가지 제안 사항이 있습니다.

결론은 동일합니다. 커널을 신뢰하고 현명하게 시도하지 마십시오. 🙂


답변

충분한 램이 있으면 페이징을 안전하게 비활성화 할 수 있습니다.

다음 명령을 시도하십시오.

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

그런 다음 다시 시작하고 dynamic_pager 프로세스가 더 이상 실행되고 있지 않은지 확인하십시오.

에 스왑 파일이 생성되지 않았는지 확인하십시오 /private/var/vm/.

다시 활성화하려면 다음 명령을 시도하십시오.

sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

또한 Spotlight를 비활성화하여 더 많은 램을 확보하고 디스크 작업을 줄일 수 있습니다. 다음 명령은 Spotlight를 비활성화 및 활성화하는 데 사용됩니다.

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.metadata.mds.plist


답변

할 수있는 일이 많지 않습니다. 왜 그런가요? OS X의 작동 방식 때문입니다. 흥미로운 부분은 Mac이 잠들 때마다 점유 된 메모리가 커지는 방법입니다.

당신은 무엇을 할 수 있나요:

  1. RAM을 업그레이드하십시오.
  2. 거룩한 ” purge “명령을 실행하여 필요할 때마다 대부분의 비활성 메모리를 정리하십시오.
  3. 스왑 비활성화 http://osxdaily.com/2010/10/08/mac-virtual-memory-swap/

답변

시스템이 설계된대로 작동합니다. 메모리가 부족한 경우에도 폐기 할 수 없지만 최근에 시스템이 사용 중이 아닐 때 스왑하는 데 사용되지 않은 일부 페이지를 작성하는 것이 좋습니다. 이렇게하면 나중에 메모리 부족이 발생하면 시스템이 사용 중일 때 스왑을 위해 쓰지 않아도이 페이지를 RAM에서 제거 할 수 있습니다.


답변