OSX가 더 많은 RAM을 사용하고 스왑을 줄 이도록하는 방법이 있습니까?


12

내가 겪고있는 문제는 4GB의 RAM이있는 서버 (및 다른 OSX 상자에서도)에 있지만 OSX는 사용 가능한 RAM의 40-60 % 만 사용하고 6-7GB 스왑을 사용합니다. 서버는 Apache 및 MySQL을 실행하는 반면 다른 시스템은 데스크탑입니다.

나는 비슷한 Linux 박스 (하드웨어 및 소프트웨어)와 사용법을 비교하고 Linux가 일반적으로 RAM의 80-90 %를 사용하고 훨씬 작은 스왑 파일 (2-3GB)을 가지고 있음을 발견했습니다. Linux 서버는 일반적으로 훨씬 빠르게 실행됩니다.

디스크 스왑 파일을 사용하기 전에 OSX가 RAM의 대부분 또는 대부분을 사용하도록하는 방법이 있습니까?

Windows에서는 실제로 스왑을 모두 비활성화 할 수 있습니다. OSX와 비슷한 것이 있습니까?


설명을 위해 : 1. 병목 현상이 VM 시스템입니까? 메모리 스타를 볼 때와 같이 페이지 아웃이 발생하면 많은 양이 있습니다. 2. 무료 및 VM 크기 정보를 어디서 얻습니까? 예를 들어 활동 모니터에 명시된 VM 크기는 스왑 파일의 크기와 다릅니다.
Chealion

VM 시스템 (VM 또는 스왑)이 문제라는 증거는 없지만 데스크톱에는 6GB의 RAM이 있으며 일반적으로 2-3GB는 무료입니다. 프로그램을 전환하면 RAM에 모두 포함되어 있기 때문에 속도가 빠르다고 생각하지만 대신 Illustrator와 같은 것으로 다시 전환하려면 2-15 초가 걸립니다. 비슷한 일이 서버에서 일어나고 있다고 생각합니다 .MySQL 또는 임시 테이블 캐싱과 같은 것입니다. VM, RAM 및 스왑 사용을 결정하기 위해 top을 사용하고 있습니다. 어떤 아이디어?
Darryl Hein

3
실제 vm 사용량을 결정하는 것이 가장 쉬운 방법입니다. du -sh /var/vm즉, 수면 이미지 (대부분 랩탑에서 볼 수 있음)가있는 경우 인위적으로 높을 수 있습니다. 메모리 속도가 느려지는지 여부를 판단하는 데 도움이되는 몇 가지 도구가 있습니다. vm_stat특히 페이지 아웃 값에 관심이 있습니다. Apple이 메모리를 관리하는 방법에 대한 자세한 정보 : developer.apple.com/documentation/Performance/Conceptual/…
Chealion

답변:


17

가장 기본적인 답변은? 아니요. OS는 사용자의 메모리 관리를 처리하여 요청한만큼의 메모리를 프로세스에 제공하며 시스템의 성능을 수정할 수 있다는 측면에서 많은 양을 제공하지는 않습니다. Linux 서버가 Mac 서버보다 성능이 우수한 이유에 대해 메모리 사용률이 방정식의 일부인지 알아내는 데 큰 도움이되지 않습니다.

가상 메모리 시스템에 "해킹 가능성"이 없기 때문에 가장 좋은 옵션은 가상 메모리의 성능을 평가하여 실제로 성능 문제가 있는지 확인하는 것입니다. 가장 기본적인 방법은 사용 vm_stat또는 사용하는 것입니다. vm_stat [number of seconds]얼마나 많은 페이지 아웃이 발생하는지 확인 하여 사용 하십시오. 사용하지 않는 페이지를 RAM에서 하드 드라이브로 이동하면 하드 드라이브에서 RAM으로 페이지를 다시 검색하는 것보다 비용이 훨씬 저렴합니다. OS X 용어의 페이지는 4kb의 데이터를 나타냅니다.

또한 32 비트 프로세스 (예 : Illustrator)는 4GB를 초과하여 액세스 할 수 없으므로 이론적으로 2GB의 여유 공간을 확보하고 6GB를 설치 한 경우 프로세스에 메모리가 부족할 수 있습니다.

데스크탑과 서버 모두 vm_stat 2에서 마지막 열을 실행 하고 확인합니다. 특히 Illustrator로 전환 할 때 몇 초 지연되는 경우가 있습니다.

스왑이 실제로 얼마나 큰지 알아 보려면 활동 모니터에서 스왑 크기를 확인하거나 실행하십시오 du -shc /var/vm/swap* | tail -n 1.

du -sh /var/vm최대 절전 모드 (지난 4 년 이상)가있는 랩톱의 경우 사용시 한 가지주의 사항이 있습니다 sleepimage. 설치 한 메모리 크기 는 대략적으로 크기 일 수 있습니다 .


맥 OS X 메모리 전문 용어 :

유선 : 커널 코드 등을 말합니다. RAM 밖으로 이동해서는 안되는 메모리. 상주 메모리라고도합니다.

공유 : 둘 이상의 프로세스간에 공유되는 메모리입니다. 두 프로세스 모두이 메모리 양을 보여 주므로 실제로 사용중인 메모리 양이 약간 잘못 될 수 있습니다.

실제 : 현재 프로세스에있는 실제 페이지 수의 대략적인 수인 task_info ()에 의해보고 된 애플리케이션의 "실제"메모리 사용량입니다. (RSIZE)

Private : 프로세스가 상주 메모리에서 사용되는 자체 프로세스에서만 사용하는 메모리입니다. (RPRVT)

가상 : 프로세스에서 임의의 변수에 대한 임의의 공간이든 관계없이 매핑 된 프로세스의 총 주소 공간은 실제 VM 사용과 동일하지 않습니다. (VSIZE)

활성 : 현재 활성으로 표시된 메모리이며 RAM이 사용됩니다.

비활성 : "비활성 메모리는 더 이상 사용되지 않고 디스크에 캐시되었습니다. 다른 응용 프로그램에 공간이 필요할 때까지 RAM에 남아 있습니다. RAM에이 정보를 남겨두면 사용자 (또는 컴퓨터의 클라이언트)가 돌아 오는 경우 유리합니다 "나중에." -Mac OS X 도움말

Free : 데이터없이 실제로 사용 가능한 RAM의 양입니다.


내가 아는 (그리고 후속 연구에서 찾을 수있는) 최고의 문서는 개발자 웹 사이트에있는 Apple의 자체 메모리 관리 기사입니다.

다른 유용한 소스 : Darwin-dev 메일 링리스트 : [ 1 ], [ 2 ] 및 MacOSXHints 에 관한 오래된 기사 . 또한 Mike Ash는 자신의 블로그 에 좋은 평신도의 소개를 올렸습니다.


sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistdynamic_pager (실제 가상 메모리 할당을 수행하는 프로그램)가 시작되지 않도록 실행 한 다음 다시 시작 하여 가상 메모리 시스템을 비활성화 할 수 있습니다 (시도 하지 않았습니다). 그러나 OS에 가상 메모리가 있다고 가정하기 때문에 매우 빠르게 문제가 발생할 수 있습니다. 백업을로드하려면 sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(단일 사용자 모드에서 필요한 경우)

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