![여전히 "비활성" 메모리가 있을 때 Mac OS X에서 스왑을 사용하지 못하도록 비활성화하는 방법은 무엇입니까?](https://rvso.com/image/1284791/%EC%97%AC%EC%A0%84%ED%9E%88%20%22%EB%B9%84%ED%99%9C%EC%84%B1%22%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B0%80%20%EC%9E%88%EC%9D%84%20%EB%95%8C%20Mac%20OS%20X%EC%97%90%EC%84%9C%20%EC%8A%A4%EC%99%91%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%20%EB%AA%BB%ED%95%98%EB%8F%84%EB%A1%9D%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
OS X의 일상적인 사용(그리고 인터넷의 다양한 게시물에 따르면 다른 여러 가지 현상)에서 흔히 나타나는 현상은 사용 가능한 "무료" 메모리가 더 이상 없을 때마다 시스템이 느려지는 것 같습니다. 디스크 활동이 많고 vm_stat가 많은 페이지아웃을 보고하므로 이는 교체로 인한 것으로 추정됩니다. (잘못된 점 바로잡아주세요)
그러나 "비활성" RAM의 양은 일반적으로 교체 시작/발생/종료 시 사용 가능한 모든 메모리(^1)의 약 12.5%-25%입니다.
에 따르면http://support.apple.com/kb/ht1342:
비활성 메모리
메모리에 있는 이 정보는 활발하게 사용되지 않고 최근에 사용되었습니다.
예를 들어, Mail을 사용하다가 종료한 경우 Mail에서 사용하던 RAM이 비활성 메모리로 표시됩니다. 이 비활성 메모리는 여유 메모리와 마찬가지로 다른 응용 프로그램에서 사용할 수 있습니다. 그러나 다른 응용 프로그램에서 비활성 메모리를 사용하기 전에 메일을 열면 느린 하드 디스크에서 메일을 로드하는 대신 비활성 메모리가 활성 메모리로 변환되기 때문에 메일이 더 빨리 열립니다.
비활성 목록에는 현재 물리적 메모리에 있지만 최근에 액세스한 적이 없는 페이지가 포함됩니다. 이 페이지에는 유효한 데이터가 포함되어 있지만언제든지 메모리에서 해제될 수 있습니다..
따라서 기본적으로 프로그램이 종료되면 해당 메모리는 비활성으로 표시되며 언제든지 요청할 수 있어야 합니다. 그럼에도 불구하고 OS X은 "사용 가능한" 메모리가 낮아질 때마다 이 메모리를 요구하는 대신 메모리를 스왑 파일로 스왑하는 것을 선호합니다.
왜? 예를 들어 비활성 메모리를 즉시 해제하고 스왑 파일을 건드리지도 않는 것에 비해 이 동작의 장점은 무엇입니까? 일부 소스(^2.)에서는 OS X가 "비활성" 메모리를 해제하기 전에 교체하기 위해 페이지 아웃할 것이라고 표시하지만, 메모리가언제든지 메모리에서 해제될 수 있습니다.? 교환은 비싸고, 출시는 저렴하죠?
일부 기본 설정이나 알려진 해킹을 사용하여 이 동작을 변경할 수 있습니까? (바람직하게는 swap/dynamic_pager를 모두 비활성화하고 다시 시작하는 것을 포함하지 않는 것입니다...)
나는 그것에 감사한다숙청명령과 디스크 권한 복구 개념을 사용하여 일부 여유 메모리를 강제로 사용하지만 이는 실제로 스왑/해제 결정 논리를 수정하는 것보다 더 많은 여유 메모리를 고통스럽게 강제하는 방법입니다.
Btw 비슷한 질문이 여기에 요청되었습니다.http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/그리고 여기:http://hintsforums.macworld.com/showthread.php?t=87688하지만 OP가 핵심 질문을 다시 요청했지만 답변 중 어느 것도 이에 대한 답변을 다루지 않습니다.
^1.2012년 3월 17일 업데이트이 질문을 처음 게시한 이후로 설치된 램을 4GB에서 8GB로 바꿨는데 문제가 남아있습니다. "비활성" 램의 양은 이전에 0.5gb-1.0gb였으며 현재는 교체 시작/발생/종료 시 일반적으로 약 1.0-2.0GB입니다. 즉, ram의 약 12.5%-25%가 osx에 의해 비활성으로 보존되는 것으로 보입니다. 커널 논리.
모든 메모리가 사용되면(여유 메모리는 0) OS는 활성 메모리에 더 많은 공간을 확보하기 위해 비활성 메모리를 스왑 파일에 기록합니다.
2012년 3월 17일 업데이트
지금까지 도움이 되도록 제안된 방법을 정리하면 다음과 같습니다.
그만큼숙청명령
"성능 분석을 위해 콜드 디스크 버퍼 캐시를 사용하여 초기 부팅 조건을 근사화하는 데 사용됩니다. malloc, vm_allocate 등을 통해 할당된 익명 메모리에는 영향을 미치지 않습니다."
이는 osx가 디스크 캐시를 교체하는 것을 방지하는 데 유용하지만(osx가 실제로 그렇게 한다는 것은 우스꽝스러운 일입니다), 디스크 캐시가 해제된다는 단점이 있습니다. 교체하면 단순히 콜드 디스크 버퍼 캐시가 되어 성능에 부정적인 영향을 미칠 수 있습니다.
그만큼프리메모리 앱및/또는일부 여유 메모리를 강제로 사용하기 위해 디스크 권한을 복구하는 중
도움이 되지 않는다방출모든 메모리, RAM에서 HD로 몇 기가바이트의 메모리 내용만 이동합니다. 결국 이로 인해 메모리를 확보하는 동안 열려 있던 응용 프로그램을 사용하려고 하면 많은 스왑 인이 발생합니다. 현재 많은 vm이 스왑 상태이기 때문입니다.
다음을 사용하여 스왑 할당 속도를 높입니다.동적 페이지 래퍼
스왑 사용 속도를 높이려면 좋은 일인 것 같지만, 먼저 비활성 메모리가 있는 동안 osx 스왑 문제를 해결하지는 않습니다.
비활성화하여 스왑 비활성화동적 호출기그리고 다시 시작
이렇게 하면 osx는 모든 메모리가 사용될 때 시스템 가격에 대한 스왑을 사용하지 않게 됩니다. 실행 가능한 대안이 아닙니다..
다음을 사용하여 스왑 비활성화해킹된 동적 호출기
위의 동적 페이지를 비활성화하는 것과 유사하게 블로그 게시물의 댓글에서 일부 발췌한 내용은 이것이 실행 가능한 솔루션이 아님을 나타냅니다. "비활성 메모리가 평소보다 높습니다." "시스템에 메모리가 부족하면 전체 OS가 중단됩니다...", "Mac의 전체 메모리 양을 소비하면 시스템이 중단될 가능성이 높습니다."
요약하자면, 저는 여전히 "비활성" 메모리가 있을 때 Mac OS X에서 스왑을 사용하지 못하도록 비활성화하는 방법을 알지 못합니다. 가능하지 않다면 적어도 osx가 메모리 교체를 선호하는 이유에 대한 설명이 있을 수 있습니다.언제든지 메모리에서 해제될 수 있습니다.?
답변1
정의에 따르면, 비활성 메모리는 페이지 아웃할 준비가 된 메모리이며, 페이지 아웃하려면 스왑에 쓰는 것이 포함될 수 있습니다.이건 별 문제가 아니야또는 최적화되어야 하는 문제; 사실이다설계된 대로 작동하는 OS X.
불행하게도 기술 지원 작성자는 커널 개발자가 아니며, 비활성 메모리가 프로그램에서 사용되지 않는 메모리라고 주장하는 Apple Knowledge Base 지원 기사 인용문은 잘못된 것입니다. 프로그램을 종료하면 모든 상주 메모리가 Free가 됩니다. Inactive에서는 멈추지 않습니다. 그러나 두 번째 링크는개발자 사이트메모리 관리가 어떻게 작동하는지 설명하는 것은 충분히 읽으면 좋은 자료입니다.
OS X에서 "비활성 메모리"가 무엇을 의미하는지에 대해 많은 오해가 있습니다. 오해와는 달리 모든 비활성 메모리가 비어 있거나, 사용되지 않거나, 캐시되거나 제거 가능한 것은 아닙니다. 실제로 최근에 액세스한 경우 활성 메모리도 캐시되거나 제거될 수 있습니다. 많은 비활성 메모리에는 간단히 버릴 수 없는 데이터도 포함되어 있습니다. 폐기된 페이지에는 유효한 데이터(OS X 개발자 측의 인용문에 따르면)가 포함되어 있고 프로그램은 (가상) 메모리에 저장된 데이터가 사라지지 않을 것으로 기대하기 때문에 폐기되면 프로그램이 중단됩니다.
비활성 메모리에는 활성 메모리와 동일한 유형의 데이터가 포함됩니다. 유일한 차이점은 OS X에서 일부 메모리 덩어리가 한동안 읽혀지거나 쓰여지지 않았다는 사실을 발견했다는 것입니다.
OS X가 일부 메모리를 비활성으로 분류하고 다른 영역을 "활성"으로 분류하는 이유는 페이지 아웃과 관련이 있습니다. 메모리가 부족해지면 일부 데이터를 페이지 아웃해야 합니다. 문제는 어떤 데이터인가? 프로그램에 즉시 필요한 것으로 판명된 데이터를 페이지 아웃하면 시간이 낭비되고 아무 성과도 얻지 못합니다. 따라서 프로그램이 즉시 다시 사용할 필요가 없는 메모리를 페이지 아웃하려고 합니다.
프로그램이 원하는 대로 가상 메모리를 사용할 수 있고 OS에 계획이 무엇인지 알려주지 않기 때문에 미래에 어떤 페이지가 필요하지 않을지 예측하는 것은 어렵습니다. 그러나 경험적으로 볼 때 대부분의 프로그램은 메모리 사용량이 "고착적"입니다. 한동안 메모리의 일부를 사용하지 않았다면 해당 메모리를 계속 사용하지 않을 가능성이 높으며 최근에 사용한 메모리를 계속 사용할 가능성이 높습니다.
따라서 OS가 일부 데이터를 페이지 아웃하기로 결정하면 최근에 사용되지 않은 페이지를 교환하는 전략이 필요합니다. 이것이 바로 OS X가 프로그램이 차지하는 메모리를 "활성"과 "비활성"의 두 더미로 분류하는 이유입니다. 그만큼위에 게시된 링크개발자 사이트를 자세히 읽으면 해당 프로세스가 어떻게 진행되는지 알려줍니다.
- 메모리가 부족해지기 시작하면 OS는 활성 메모리 페이지를 살펴보기 시작하고 각각에 플래그를 설정합니다.
- 프로그램이 페이지를 읽거나 쓰면 플래그가 지워집니다.
- 약간의 지연 후에도 플래그가 지워지지 않으면 해당 페이지는 "비활성" 더미로 분류됩니다.
- 프로그램이 "비활성" 페이지에 접근하면 해당 페이지는 "활성" 파일로 다시 이동됩니다.
- 메모리가 부족해지면 "비활성" 페이지가 페이지 아웃됩니다.
교체할 메모리를 결정하는 이 정렬 프로세스는 모든 최신 운영 체제에서 유사합니다. Linux에는 에 설명된 대로 활성 및 비활성 페이지의 동일한 두 목록이 있습니다.Linux 가상 메모리 관리자 이해. Windows에서는 세 가지 이상의 최신 클래스를 사용하여 약간 다른 것을 사용할 수 있습니다. 현재로서는 신뢰할 수 있는 최신 기술 설명을 찾을 수 없습니다. 더 많은 구현에 대해서는 Wikipedia 페이지에서 논의됩니다."페이지 교체 알고리즘". OS X와의 유일한 차이점은 통계가 표시되는 방식이었습니다. 누군가는 top
활동 모니터 에서 활성 및 비활성에 대해 별도의 숫자를 표시하는 것이 좋을 것이라고 결정했습니다 . 돌이켜보면 아마도 그다지 좋은 생각은 아니었을 것입니다. (OS X 10.9에서는 이것이 바뀌었습니다.)
플래그를 설정 및 지우고 활성/비활성 힙을 유지하는 이 프로세스에는 약간의 프로세서 성능이 사용됩니다. 이러한 이유로 OS X에서는 여유 메모리가 많을 때 이를 수행하지 않습니다. 따라서 시작하는 첫 번째 프로그램은 사용 가능한 메모리가 부족해지기 시작할 때까지 모든 "활성" 메모리로 표시됩니다.
따라서 빈 상태에서 시작하여 점점 더 많은 프로그램을 열면 활동 모니터에서 다음과 같은 진행 상황을 볼 수 있습니다.
- 첫째, "사용 가능한" 메모리는 많고 비활성 메모리는 거의 없습니다. 이는 메모리 플래거가 실행을 시작하지 않았기 때문입니다.
- 사용 가능한 메모리 양이 줄어들면서 OS X는 메모리 플래거를 실행하기 시작하고 "비활성" 양이 증가하는 것을 볼 수 있습니다. "비활성"의 각 비트는 이전에는 "활성"이었습니다.
- 여유 메모리가 부족하면 "비활성" 더미의 페이지가 페이지 아웃됩니다. 메모리 플래거는 또한 메모리를 활성 및 비활성으로 분류하는 전체 기울기를 실행합니다. 일반적으로 스왑이 기록되는 동안 많은 "비활성"을 보게 되는데, 이는 메모리 플래거가 예상한 작업을 수행하고 있음을 나타냅니다.
페이지~ 해야 하다교체되기 전에 비활성으로 분류됩니다. 이것이 바로 Apple 개발자 사이트의 "이 페이지에는 유효한 데이터가 포함되어 있지만 언제든지 메모리에서 해제될 수 있습니다."라는 인용문이 의미하는 것입니다. 이는 비활성 페이지로 강등될 때까지 공개되지 않는 활성 페이지와 반대되는 것입니다. 페이지를 공개하는 방법에는 여러 가지가 있습니다. 페이지가 파일에서 매핑되었고 수정되지 않은 경우 즉시 삭제하고 요청 시 다시 읽을 수 있습니다. 마찬가지로 이전에 교체되었지만 교체된 이후 수정되지 않은 메모리인 경우에도 마찬가지입니다. 프로그램은 필요에 따라 잊혀지고 다시 생성될 수 있는 데이터를 저장하기 위해 캐시와 제거 가능한 메모리를 명시적으로 할당할 수도 있습니다(그러나 프로그램이 캐시를 할당하는 이유는 다음과 같습니다). 해당 데이터를 다시 생성하는 데 상당한 시간이 걸리는 경우입니다.) 그러나 비활성 메모리의 대부분은 프로그램이 유효한 데이터를 쓴 메모리이며, 이 데이터를 페이지 아웃하려면 스왑에 쓰기가 필요합니다.
따라서 활동 모니터에서 "비활성" 메모리의 양을 살펴보고 컴퓨터가 스왑에 쓰는 동시에 많은 비활성 메모리가 있다는 것을 보면 시스템이 설계된 대로 작동하고 있음을 알 수 있습니다.
비활성 메모리와 파일 캐시 사이에도 혼동이 있습니다. 활동 모니터가 이미 별도의 제목 아래에 나열되어 있기 때문에 왜 그렇게 혼란스러운지 잘 모르겠습니다. 캐시는 다시 액세스해야 할 경우를 대비하여 파일 시스템에서 읽거나 쓴 최근 데이터를 저장하는 데 사용되는 메모리입니다. 메모리가 부족하면 OS X는 캐시를 먼저 제거하는 경향이 있습니다. 스왑 스래싱이 있고 활동 모니터에 큰 캐시 더미(비활성 아님)가 표시되는 경우저것문제가 될 것입니다. 그러나 비활성 메모리는 다릅니다.
확실하지 않은 경우 "비활성"과 "활성" 간의 구분을 무시하십시오. 이를 하나의 "프로그램에서 사용하는 메모리" 덩어리로 간주하고 두 숫자를 더합니다. 이것은 메모리 사용량을 알려줄 때 다른 모든 운영 체제에서 수행하는 작업입니다.
OS X 10.9에 대한 참고사항:Mavericks는 또 다른 스왑 계층인 "메모리 압축"을 도입했습니다. 이제 활성 페이지는 비활성으로 분류된 다음 압축된 다음(사용 중인 도구에 따라 커널 메모리로 표시될 수 있음) 메모리 사용량이 증가함에 따라 스왑에 기록됩니다. Mavericks는 또한 활동 모니터에서 활성 및 비활성에 대한 별도의 숫자 표시를 중단했습니다. 특히 이를 둘러싼 오해를 고려할 때 보기에 유용한 것이 아닌 것으로 밝혀졌기 때문입니다.
답변2
현재 macos X의 swappiness(또는 소위) 동작을 조정하는 쉬운 방법은 없습니다. 하지만 사용 가능한 몇 가지 해킹이 있습니다(개발자 계정 및 SDK 필요).
http://cestdelamerde.com/archives/22-Killing-Mac-OS-X-Swapping-How-To-Disable-dynamic_pager.html
http://dropsafe.crypticide.com/article/3848
행운을 빌어요!
추신. MacOSX의 활성, 비활성 및 기타 메모리에 대한 보다 일반적인 검토를 위해 이 답변(나의 답변)을 읽고 싶을 수도 있습니다.OS X의 유선 메모리와 활성 메모리 비교
답변3
영구적인 해결책은 아니지만 적어도 일부 비활성 메모리를 회수하여 잠재적으로 두려운 스와핑을 방지하는 데 도움이 될 수 있습니다.http://itunes.apple.com/nz/app/freememory/id460931672?mt=12
이 도구는 무료이며 사용하기 매우 쉽습니다. 시작되면 시스템 도구 모음/메뉴에서 "여유 메모리" 옵션을 선택하십시오.
ActivityMonitor 메모리 표시와는 달리 여유 메모리만 표시하는데, 이는 스와핑 진행 여부를 더 잘 나타내는 것으로 보입니다.
답변4
이에 대한 정답은 없다고 생각합니다. Mac을 잠자기 상태로 설정해도 활성 상태로 유지되는 메모리도 마찬가지입니다. 잠을 잘 때마다 메모리 용량도 점점 커집니다.
"재미있는"(비싼) 측면에서는 메모리를 업그레이드하거나 HDD를 SSD로 교체할 수 있으므로 교체로 인해 성능이 저하되지는 않습니다. 이제 Corsair 메모리를 합리적인 가격에 구입할 수 있으므로 첫 번째 옵션을 선택했습니다.