Mac OS X에서 스왑 파일을 비활성화하는 이유는 무엇입니까?


51

MacBook Pro에 SSD 드라이브를 설치하는 방법에 대해 알게되었습니다.
의견에 누군가 스왑 파일을 비활성화하는 것이 좋지만 이유를 말하지 않았습니다.

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

Mac OS X에서 스왑 파일을 비활성화하려는 이유가 궁금
합니다. 성능이 향상됩니까? 안정?
단점이 있습니까?

마지막으로 SSD를 사용 하지 않을 때 스왑 파일을 비활성화하는 것이 합리적 입니까?


11
일부 블로그에서 성능이 향상되었다는 소식을 들었 기 때문에 지식이 부족한 경우가 종종 있습니다. SSD는 본질적으로 빠르기 때문에 훌륭한 테스트 베드를 제공합니다. 이러지 마 그것은 안정성을 줄이고 시간이 지남에 따라 치명적인 영향을 미칩니다. 현재까지 성능 향상을 보여주는 실제 데이터 (유효하고 신뢰할 수있는)는 없습니다. 그리고는 OS의 중요한 구성 요소는 2 GB 이상 RAM 또는 (120)이 있는지 여부입니다

2
어떤 치명적인 영향이 있습니까? 궁금해서 ... 내 컴퓨터 (4GB MacBook Pro)를 훨씬 더 빠르게 만드는 것 같습니다. 예를 들어, 새 터미널 창을 열면 더 이상 차단이 없습니다. 몇 초가 걸리는 순간입니다. 그리고 평소에 사용하는 것보다 두 배나 많은 앱을 열 수 있었고 아무런 문제가 없었습니다.
orange80

4
orange80 : 터미널 윈도우 속도가 느려지는 일반적인 원인은 이전 로그인을 찾는 로그인 프로세스입니다. 이는 hushlogin으로 해결할 수 있습니다. apple.stackexchange.com/a/54167/22570- 스왑 설정을 변경 한 후 재부팅 한 적이 있습니까 ? ? 스왑을 제거하여 터미널 윈도우 속도를 향상시킬 이유는 없습니다.
Ken

작은 용량의 SSD를 사용하면 여유 공간이 필요할 수 있음을 이해합니다. 그러나 성능 측면에서 SSD는 HD보다 훨씬 빠르므로 SSD 기반 OS에서 스왑을 비활성화하면 실제로 성능이 어떻게 향상되는지 알 수 없습니다. 그것에 대한 경험이 있습니까? 감사.

1
수퍼 유저에서 허용되는 답변 : Mac의 dynamic_pager를 비활성화 하시겠습니까? (2012-04-27)
Graham Perrin 12

답변:


39

Mac OS X에서 스왑 파일을 비활성화하려는 이유가 궁금합니다. 성능이 향상됩니까? 안정? 단점이 있습니까?

나는 사람들이 SSD 드라이브를 위해 그것을 할 것이라고 생각합니다. 그 드라이브는 표준 자기 회전 디스크 드라이브와 수명이 동일하지 않기 때문입니다. 쓰기주기는 제한되어 있으므로 스왑 파일과 함께 사용하면 이러한주기가 더 빨리 소모됩니다.

마지막으로 SSD를 사용하지 않을 때 스왑 파일을 비활성화하는 것이 합리적입니까?

RAM이 많은 경우 성능이 향상 될 수 있지만 일반적으로 좋은 생각아닙니다 . 메모리 상한에 부딪 치면 문제가 생길 수 있습니다.

또한 유선 메모리는 유효하지 않을 때 해제되지 않으며, 페이지 출력 이벤트가 트리거 될 때만 해제되며 가상 메모리가 비활성화 된 경우에는 발생하지 않습니다. 따라서 더 이상 사용하지 않아도 모든 메모리가 소모되는 데 시간이 오래 걸리지 않습니다.


4
맥 가상 메모리 시스템은 실제 메모리를 교체 할 때 물리적 스왑 파일 만 생성한다는 점에서 매우 게으르다. 스왑으로 쓰기를 수용하기 위해 지연하지 않아도 속도가 빨라지면 스왑을 처음 사용할 때의 이전 속도 향상에 의해 거의 확실하게 상쇄됩니다. 스왑이 있으면 Mac이 더 빨라집니다. 대답의 나머지 부분은 제자리에 있습니다 -훌륭하게 완료되었습니다!
bmike

2
@geotavros Mac OS X의 가상 메모리 시스템은 Windows와 동일하게 작동 하지 않습니다 . 4GB의 메모리로 나를 믿으십시오. 가상 메모리를 활성화하면 Mac이 더 빠르게 작동합니다. VM을 비활성화하면 두통과 시스템 불안정이 발생할 수 있습니다.
ghoppe

3
쓰기 레벨링과 적절한 용량 (128GB)을 가진 최신 SSD 인 FYI는 수세기에 걸쳐 쓰기주기 제한이 있습니다. 작고 원시적 인 SSD는 2000 년에 합리적인 두려움 이었지만 더 이상은 아닙니다.
Ken

3
8GB 메모리가 장착 된 MacBookPro5,2의 경우 성능이 크게 향상되었습니다. VirtualBoxVM의 Snow Leopard 또는 Lion의 경우 놀라운 개선이 이루어졌습니다. 세 가지 경우 모두 OS는 '제한'에 도달 할 위험을 최소화하는 방식으로 메모리를 사용하는 것으로 보이지만 (모든 것이 효과적으로 중단되는 경우) 그 위험은 남아 있으므로 Activity Monitor에서 사용량을 관찰하는 것은 제정신입니다.
Graham Perrin

2
정보 VM (또는 가상 메모리)을 스왑 파일과 혼동해서는 안됩니다. Windows, OS X, * BSD, Linux, 많은 Unix는 모두 가상 메모리를 사용합니다. 일반적으로이 OS의 아키텍처는 프로세스 당 VM을 제공하고,이 영역 내에 프로세스가 할당 된 메모리를 제공하며, OS는이 할당 된 메모리를 물리적 RAM에 배치하거나 OS가 생각하는대로 스왑을 처리합니다. 스왑의 유무는 다양한 기준 (속도, 응답 성 등)에 따라 한 가지 방식 또는 다른 성능으로 변경 될 수 있습니다. 이는 우리 각자의 업무량에 따라 다릅니다. 영국 사람들이 말하는 것처럼 : 당신의 밀레는 다를 수 있습니다! 그리고이 경우 크게.
Huygens

27

이들이 스왑 파일을 비활성화 한 이유는 블록 당 최대 쓰기 수를 가진 SSD에 대한 편집증 일 가능성이 높습니다. 스왑 파일을 자주 쓸 수있어 디스크 조각화 (파일 시스템 조각화)가 발생하여 디스크가 더 빨리 고장날 수 있습니다.

즉, 이것은 분명히 조기 최적화의 경우입니다. 스왑 파일을 비활성화 하는 것은 거의 항상 HORRIBLE , HORRIBLE 아이디어입니다. 스왑 파일은 실행중인 프로그램이 실제로 설치 한 것보다 많은 메모리를 소비 할 때 사용됩니다. 이 기능을 비활성화하면 동시에 많은 프로그램을 실행할 수 없거나 한계가 예상보다 훨씬 낮을 수 있습니다. 메모리가 부족합니다.

후자는 디스크 공간이 부족할 때 (스왑 파일을 사용하여) 경험했습니다. ~ 3 기가없는 120 기가 드라이브가있었습니다. Civilization IV (대형 전체 화면 게임)를 플레이하는 동안 시스템에 하드 드라이브 공간이 부족 (약 50 메가 무료)되어 "kill apps now"창이 나타납니다. 이것은 전체 화면 게임 뒤에 숨어 있었기 때문에 시스템이 잠겼습니다. 다른 Mac에서 원격으로 여러 앱을 죽일 수 없다면 전원 버튼을 길게 눌러야했습니다.


6
나는 이것이 나쁜 생각이 무엇인지 반향하고 싶습니다. RAM이 16GB 인 경우에도 스왑이 사용됩니다. 그다지 많지는 않지만 이미 스왑에 기록되어 있습니다. 항상. 안전 장치입니다. OS가 없으면 OS가 실행될 수 있지만 타사 앱의 작동 방식을 확신 할 수 없습니다. HD가 기록됩니다. 인생이라면 사실입니다. 그리고 "실제"성능 향상은 없을 것입니다. 위약입니다.

4
@cksum 일부 특정 서버 시나리오에서 sysadmins는 스왑 파일을 비활성화하여 특정 구성을보다 빠르게 수행 할 수 있지만 (a) 메모리가 부족하지 않고 (b) 테스트하지 않으면 스왑 파일을 비활성화하지 않습니다 ) 실제로 더 빠릅니다. 그러나 이것은 전문가가 운영하는 서버입니다. 소비자 컴퓨터에는 필요하지 않습니다.
CajunLuke

@cksum 나는 첫 번째 문장에 동의 할 수 있습니다. 두 번째, 세 번째 및 네 번째 문장에는 맞지만 나머지는 쓰레기입니다. OS는 "안전 보호"로 교체하지 않으며, OS는 더 많은 가용 메모리를 필요로하는 활성 프로세스로 바꾸거나 데이터를 버퍼링하여 I / O 속도를 높이기 위해 스와핑하므로 RAM에서 오랫동안 비활성 메모리를 해제 할 수 있습니다. 응용 프로그램을 개발할 때 OS에 메모리를 요청하면이 메모리는 가상 메모리 사용의 일부입니다. 개발자 또는 응용 프로그램에서 OS가 해당 메모리 또는 그 일부를 실제 RAM 또는 스왑에 넣었는지 알 수 없습니다. (계속)
Huygens

따라서 타사 앱이 사용 가능한 메모리보다 많은 메모리를 요청하면 OS에서 오류를 발생시킵니다. 이것은 스왑 여부와 무관합니다. 스왑을 사용하면 한계가 높아집니다. 성능에 대해 2 명의 사용자가 로그인 한 경우 활성 사용자가 대용량 파일이있는 비디오 편집기를 사용하는 경우 OS는 활성 사용자가 수행 한 작업 속도를 높이기 위해 비활성 사용자의 메모리 페이지를 스왑에 넣기 시작할 수 있습니다. 이 경우 속도 측면에서 성능이 향상됩니다. 그러나 다른 사용자로 전환하면 속도가 느려지고 OS는 스왑을 다시 읽어야합니다. 이것은 위약이 아닙니다!
Huygens

1
한 번 (리눅스에서) 설정할 때 스왑 파티션을 설정하는 것을 잊었습니다. 내가 교수형에 처했을 때 나는 그것이 커널 버그라고 생각했다.-mincecraft를 플레이하는 동안 스왑 메모리가 부족하다는 것이 밝혀졌다. 스왑을 사용하십시오.
Wyatt8740

12

시스템이 저장 장치에 쓸 수있는 거의 모든 경우에 이것이 왜 나쁜 생각인지 설명하는 두 가지 훌륭한 답변이 있습니다.

스왑을 비활성화 할 수있는 이유는 CD, DVD, NetBoot를 사용하여 잠긴 네트워크 이미지 또는 광학이 부족한 일부 Mac과 함께 제공되는 새로운 Lion 설치 프로그램 또는 복구 포트와 같은 읽기 전용 USB 포트와 같은 읽기 전용 미디어에서 시스템을 실행할 수 있기 때문입니다. 드라이브.

가상 메모리가 있다는 것은 많은 프로그램이 동일한 공통 라이브러리 코드를 사용할 때 시스템이 훨씬 빠르게 실행되고 더 적은 RAM을 사용할 수 있음을 의미합니다. 각 프로그램 필요한 모든 코드의 개인 복사본이 있다고 생각 하지만 가상 메모리가 존재하면 시스템은 동일한 물리적 RAM을 다른 프로그램에 매핑하는 좋은 방법이 있습니다.

스왑을 비활성화하면 Mac이 계산 된 일부 메모리의 캐시로 드라이브의 작은 부분을 사용하지 못하지만 프로그램은 그 결과 자체를 적절한 캐시에 쓸만큼 똑똑하지 않았습니다.

백업 할 백업과 시간이 있다면 끄지 말고 경험이 어떻게 변하는 지보십시오.

매년 새 드라이브에 대한 비용을 지불해야한다는 것을 알고 있어도 스왑을 계속 사용합니다. 스왑이 제공하는 속도는 엄청납니다. 항상 그런 것은 아니며 시스템이 작동하지 않거나 페이징되는 경우도 있습니다. 반대의 경우도 있습니다. 많은 사람들이 스왑없이 실행하여 매끄럽게 실행되지 않을 때 컴퓨터 속도를 늦출 수 있기 때문에 맥이 페이징을 시작하는 대신 메모리 할당 오류를 얻습니다.

SSD 사용 사례는 다를 수 있으므로 시도하면 알려주십시오.


2
dynamic_pager비활성화 되면 속도 가 크게 향상됩니다 . 현재 apple.stackexchange.com/a/60661/8546 의 스크린 샷 은 데몬이 비활성화되어있는 동안 (스왑 파일을 사용하지 않는 동안) 측정 된 가상 메모리 크기와 페이지 크기를 보여줍니다.
Graham Perrin

속도 향상을 위해 정확히 무엇을 측정하고 있습니까? (또는 UI에 지연이나 지연이 없거나 쉽게 정량화 할 수 없거나 측정 할 수없는 것이 있습니까?)
bmike

측정하지 않은 경우 : Lion을 사용하면 대부분의 것이 눈에 띄게 빨라 보였습니다 . 거대한 단어를 사용하기에 충분했습니다 . 가장 최근에 : VirtualBoxVM에서 10.8 (예 : 로그인하여 활동 모니터를 다시 시작하는 dynamic_pager경우)은 12 초없이 16 초가 걸립니다 . 더 넓고 측정 된 비교를 위해 Phoronix Test Suite 또는 Geekbench를 사용할 수 있습니다 .
그레이엄 페린

9

2008 년 말 유니 바디 맥북 프로에서 스왑을 비활성화하고 성능을 눈에 띄게 향상 시켰습니다.

나는 당신의 여유 메모리를 주시하고 6GB를 설치했습니다. 몇 번 메모리 한계에 도달하면 시스템이 다운되었습니다.

새로운 MacBook Air에서 스왑을 비활성화하는 것을 꿈꾸지 않을 것입니다. 스왑을 활성화하면 이미 빠르며 처음에는 4GB 만 있습니다.

사람들이 SSD에서 스왑을 비활성화하는 또 다른 좋은 이유는 작은 SSD를 얻고 얻을 수있는 모든 공간이 필요하기 때문입니다. 어쨌든하지 마십시오.


이것이 효과가 있었던 실제 경험을 가진 것이 좋습니다. 스왑이 비활성화되었을 때 머신의 RAM 확약은 무엇입니까? RAM에 비해 더 많은 앱을 열면 어떻게 되었습니까? 얼마나 많은 RAM이 있었으며 어떤 앱이 오류없이 편안하게 그 공간에서 실행 될까요?
bmike

1
@ bmike, 확실하지 않습니다, 시스템 충돌 :-D, 6GB 및 내가 사용하는 모든 것 :). Aperture 또는 XCode는 실제 메모리 호그이며 때때로 시스템을 넘길 수 있지만 Skype, Mail, Adium, Safari, Chrome, iTunes 및 OmniFocus가 모두 잘 맞습니다 ...
w00t

6

내 경험은 w00t와 비슷합니다. 성능 향상이 저에게 효과적이기 때문에 SL과 Lion에서 스왑 파일을 비활성화했습니다. 유선 사용은 일주일 정도 지나면 제어 할 수 없지만 간단한 재부팅으로 문제가 해결됩니다. SSD는 없지만 느린 5400rpm 디스크가 있습니다. SSD 수명은 사람들이 실제로 그렇게하려고 노력하는 것만 큼 나쁘지 않습니다. SSD를 착용하는 것이 두렵기 때문에 단순히 수행하는 경우 다음을 참조하십시오. http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd / 2http://communities.intel.com/thread/21717?tstart=0 인텔은 80gb 드라이브에서 매일 20GB 이상, 최대 5 년 동안 드라이브를 평가합니다. 더 큰 크기의 드라이브는 더 오래 지속됩니다. 일반 사용자는 하루에 10GB도 사용하지 않습니다.

iStat Menus에서 4GB 메모리 사용량을 모니터링하고 "purge"bash 명령 (Xcode를 설치해야 함)과 함께 Automator 스크립트를 사용하여 비활성 메모리를 지우고 더 많은 여유 메모리를 자주 열어야합니다. 메모리 누수가있는 응용 프로그램에서 모든 RAM을 사용하는 경우가 많았습니다. 하드 재설정을 수행해야했습니다. 드물게 발생하는 경우와 일반적으로 속도가 빨라지면 스왑 파일을 비활성화하는 것이 좋습니다. 다른 사람들이 언급 한대로 이로 인해 많은 앱을 한 번에 열 수는 없지만 그 일을 할 수 있다는 것을 알고 있습니다.


메모리 범위 에는 자동 제거 옵션이 있습니다. (dynamic_pager가 활성화 된 경우 제거를 허용하지 않습니다.)
Graham Perrin

5

작은 SSD로 인해 스왑을 비활성화하려는 사람들을 위해 2 센트를 넣는 것만으로 수면 이미지는 훨씬 더 많은 디스크 공간을 사용합니다.

또한 SSD의 제한된 수명 (특히 교체 할 수없는 MBA 및 하드 와이어 SSD 칩이있는 제품)의 수명이 걱정되는 사용자의 경우 컴퓨터가 하루에 여러 번 절전 모드로 전환되면 절전 이미지를 다시 작성하는 것이 문제가 될 수 있습니다. 내 노트북은 하루에 수십 번 수면을 취합니다. 매일 48GB의 데이터를 SSD에 씁니다.

각 경우 해결책은 최대 절전 모드를 비활성화 한 다음 설치된 RAM (필자의 경우 8GB)만큼 큰 수면 이미지 파일을 삭제하는 것입니다.

단점 : 랩톱이 절전 모드 일 때 배터리가 방전되면 현재 상태가 손실됩니다. 이것은 강제 하드 재시작과 동일합니다. 랩탑에 물리적 인 피해를 입히지 않고 생산성 손실 만 발생합니다. 최대 절전 모드를 비활성화 한 경우 배터리가 부족한 상태에서 충전 할 수없는 경우 최대 절전 모드를 활성화하는 코드를 준비하십시오!

최대 절전 모드를 해제하려면 터미널에서 명령은 다음과 같습니다.

 sudo pmset -a hibernatemode 0

최대 절전 모드를 활성화하려면 명령은 다음과 같습니다.

 sudo pmset -a hibernatemode 3

SSD / HDD 공간을 확보하기 위해 마지막 잠자기 이미지를 삭제하려면 (최대 절전 모드를 해제 한 경우에만 의미가 있습니다.

 sudo rm -rf /var/vm/sleepimage

출처 : man pmset


3

스왑을 비활성화 하면 성능 향상됩니다. 예를 들어 나는 정기적으로 Aperture를 사용하고 스왑이 성능이 향상되고 1Gb를 초과하면 OS를 다시 시작하여 정리하고 성능을 복원해야합니다. 참고 : 머신에는 6GB의 RAM이 있으며 모든 용량을 차지하는 것은 아니며 약 3GB는 사용 가능하지만 1G 스왑은 성능을 크게 저하시킵니다.


3

OS X 및 기타 UNIX 변형 모두에서 수년간 컴퓨터에서 스왑을 비활성화했습니다.

메모리가 부족할 때 경고하는 도구를 사용하며 시스템 충돌에 대해 걱정하지 않습니다.

iMac에는 12GB가 있으며 스왑이 비활성화되어 있으면 여러 개발 도구, 응용 프로그램, 브라우저 등이 열려 있어도 거의 항상 4GB의 여유 공간이 있습니다.


5
어떤 메모리 도구를 사용하고 있습니까?
Dmitriy

1

여기서 반복되는 패턴은 다음과 같습니다.

스왑 파일을 비활성화 한 사용자는 성능이 향상되었습니다 (물리적 RAM이 충분 함).

스왑 공간을 비활성화하지 않은 사람들은 스왑 공간이 작동하지 않을 것이라고 확신하고 무언가 끔찍한 일이 일어날 것이며, 그렇게하지 말라고 충고합니다.

이것은 단순히 두 가지 이유 때문입니다.

  1. 더 이상 유효하지 않은 물리적 RAM의 부족 및 고비용에 대한 오래된 아이디어
  2. 물리적 RAM이 충분할 때 MacOS의 스와핑 메커니즘이 실제로 불량 스왑 파일을 사용합니다.

1
스왑 공간이 필요할 때만 사용되면 좋을 것입니다. 그러나 그렇지 않습니다. MacOS에서 2GB 및 4GB 가상 머신을 실행합니다. 1.6GB의 사용 가능한 RAM이 있으면 1GB 가상 머신 (또는 다른 프로그램)을 실행할 수 있어야하지만 OS가 페이징을 시작하기 때문에 사용할 수 없습니다. 결과적으로 RAM의 약 85-90 % 만 사용할 수 있습니다. 모든 RAM을 사용하려면 페이징을 비활성화해야합니다. 모든 Windows 컴퓨터 에서이 작업을 수행하고 MacOS에서도 동일하게 수행하고 싶습니다. 프로그램에 RAM이 부족하면 실패합니다. 그것이 내가 원하는 것입니다. 다른 실행중인 응용 프로그램을 원하지 않습니다

3
YMMV. 현대의 RAM로드 시스템에서 성능을 향상시키는 데 도움이되지 않기 때문에 더 이상 스왑을 비활성화하지 않습니다. 나는 예전의 나쁜 시절에 도움이 되었기 때문에 과거에 사용했습니다. 요즘에는 스왑을 비활성화하여 성능이 변경되지 않을뿐만 아니라 응용 프로그램 불안정성이 크게 증가하는 것을 볼 수 있습니다.
Brian Knoblauch

1
바람직하지 않은 일 것이다 일이 인간은 그들이 인해 메모리 부족 오류로 다른 프로그램과 시간에 기계가 충돌합니다을 시작할 수 없습니다 잊지 것입니다. 이것이 끔찍하고 유머러스 한 교육인지 여부는 타이밍, 백업 빈도 및 지연 허용 오차에 따라 다릅니다.
bmike

1

개인적인 경험.

Memory Amount    |
 4 GB            | Don't disable it, Mountain Lion itself boots with about 1 GB.
 8 GB            | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more    | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.

빠른 참고 사항 : Mac에서 통합 그래픽을 사용하는 경우 해당 메모리는 기본 메모리와 kernel_task와 공유됩니다. 따라서 사용 가능한 총계에서 해당 금액을 빼야합니다.

SSD 사용자는 더 많은 공간을 확보하기를 원하지만 SSD에서 가상 메모리가 번성한다는 사실을 아는 것이 중요합니다. SSD가 손상됩니까? 예. 그러나 눈치 채기 전에 오랫동안 Mac을 교체합니다.


1
8GB 메모리로 Retina MacBook Pro에서 가상 메모리를 개인적으로 비활성화했습니다. 이 계산법은 시스템에서 약 2GB 메모리 계산 통합 그래픽을 사용합니다. 그래서 그것은 6GB입니다. Xcode는 작업을 위해 2GB 이하의 메모리를 소비합니다. 그래서 여유가 많습니다.
Shane Hsu

1

행정상 개요

스왑 영역 (스왑 파티션, 스왑 파일 또는 페이지 파일이라고 함)은 OS가 처리 할 수있는 실제 메모리를 늘리는 메커니즘 일뿐입니다.

사용 가능한 실제 RAM이 부족하고 오늘날의 컴퓨터에서 4GB 이하의 RAM이 있는지 말씀 드리겠습니다. 그렇다면 아마도 스왑이 있어야합니다. 그러나 이것은 작업량과 컴퓨터 사용 방법에 따라 다릅니다.

4GB 이상의 RAM이 있으면 시스템이 스왑을 사용하지 않을 가능성이 높습니다. 따라서 스왑이 활성화되어 있는지 여부는 크게 변하지 않습니다.
이것은 다른 요소에 따라 다르지만, 시스템이 오래 실행 될수록 OS가 사용하지 않는 RAM의 작은 부분을 스왑 이벤트로 스왑 할 가능성이 높아지지만 분명히 많은 공간이 남아 있습니다. 그러나 종종 시스템은 파일 버퍼 및 기타 작업에 "사용 가능한"RAM을 사용하며 일부 워크로드로 인해 파일 버퍼가 사용 가능한 모든 RAM을 사용할 수 있습니다.

배경 정보

스왑을 비활성화하고 메모리가 완전히 사용되면 어떻게 될까요? 다음에 응용 프로그램이 더 많은 메모리를 요청하면 (예 : malloc 또는 realloc) 오류가 발생합니다! 올바르게 코딩 된 경우 응용 프로그램에서이를 감지하지만 이러한 오류를 처리하고 프로그램을 정상적으로 종료하는 것은 여전히 ​​어려운 과제입니다. 그러나 많은 개발자는 성공적인 메모리 할당을 테스트하지 않으며이 비 할당 된 메모리를 사용하자마자 응용 프로그램이 충돌하는 경우가 많습니다. 따라서 응용 프로그램이 중단 될 가능성이 높으며 일반적으로 동시에 두 개 이상의 응용 프로그램이 실행되기 때문에 많은 응용 프로그램이 중단 될 수 있습니다. 바라건대, 커널 자체는 면역이되어야하지만 내 경험상 항상 그런 것은 아닙니다.

스왑이있는 경우, 동일한 동작을해야합니다 , 하지만 기회는 당신이 그 한계에 도달하지 않습니다 그래서 당신은 더 높은 제한이 있습니다.

8GB와 16GB의 RAM이있는 개인적으로 2 대의 컴퓨터가 있습니다. 이 컴퓨터를 개인적으로 사용하면 절대로이 RAM을 모두 사용할 수 있습니다 (오늘! 몇 년 후에는 다를 수 있음). 물리적 RAM 한계에 도달하는 유일한 이유는 프로세스에 불량이 발생하여 모든 RAM을 사용하고 있기 때문입니다. 스왑이없는 것은 안심입니다. 커널은 RAM 한계에 도달하자마자 불량 프로세스를 즉시 종료합니다. 스왑을 사용하면 시스템이 스왑 및 스왑 및 스왑되고 커널이 범인을 죽일 때까지 때로는 완전히 응답하지 않기 때문에 고통스러운 경험을 얻을 수 있습니다 (SSD에는 아닐 수도 있습니다 ...).

조언

스왑을 제거하면 끔찍하게 잘못된 일이 발생할 수 있다고 말하는 사람들에 의해 두려워해서는 안됩니다. 그렇게하면 4GB의 RAM에서 2GB로 이동하는 것처럼 물리적 주소 공간이 줄어 듭니다. 그런 일을 하시겠습니까? 그런 다음 스왑을 제거해서는 안됩니다. 그러나 당신은 그것을 제한하기로 결정할 수 있으며 그것은 현명 할 것 입니다.

워크로드가 사용 가능한 실제 RAM보다 가까이 또는 더 많은 공간을 사용하게하거나 많은 I / O (디스크에 읽기 / 쓰기)가 필요한 경우 스왑을 유지해야합니다.

스왑을 유지해야하는 경우 사용자는 프로세스가 사용할 수있는 메모리 양으로 제한을 설정해야합니다. Linux 시스템에서는 cgroups 메모리 제한을 사용하여 일부 프로세스가 제어되지 않는 것을 피할 수 있습니다 .OS X의 해당 기능을 모르지만 그렇게해야합니다.

그러나 워크로드에 사용 가능한 메모리가 충분하면 스왑을 안전하게 비활성화하거나 유지할 수 있습니다. 시스템이 스왑을 사용하지 않으면 성능 저하 (특히 오래된 회전식 하드 디스크에서는 볼 수 있고 SSD에서는 덜 표시됨)에 영향을받지 않기 때문에 성능면에서도 크게 변하지 않습니다.

사용 가능한 RAM이 충분한 경우 프로세스 또는 프로세스 그룹당 메모리 제한을 설정하기 위해 위와 동일한 트릭을 사용하는 것이 좋습니다.

내 예

RAM이 1GB 인 오래된 PC가 있으며 큰 스왑이 있습니다 .4GB이므로 Firefox 및 기타 응용 프로그램을 실행할 수 있습니다. 그래도 올바른 사용자 경험을 제공하기 위해 가능한 적은 응용 프로그램 (또는 Firefox의 탭)을 사용하는 경향이 있습니다.

RAM이 8GB 인 작은 서버가 있습니다. 나는 내 작업 부하를 정확하게 알고 있으며 프로세스가 불량하고 모든 메모리를 소비하기 때문에 서버 속도가 느려지 는 것을 원하지 않습니다 . 장벽을 적용하는 스왑 및 cgroup 메모리 제한이 없으므로 응용 프로그램이나 서비스가 충돌 할 수는 있지만 커널은 충돌 할 수 없습니다. Btw, 이것은 Linux 컴퓨터입니다.

그런 다음 16GB RAM의 Mac이 있습니다. 나는 그것의 유일한 사용자가 아니며, 우리는 사용자를 전환 할 때 기다리는 것을 신경 쓰지 않을 것입니다. 스왑이 있기 때문에이 컴퓨터의 다른 사용자의 작업로드를 계획하기가 어렵습니다. 내가 유일하게 스왑을 사용하더라도. 필자는 종종 여러 VM을 실행하고 메모리 소비 응용 프로그램을 사용하지만 동시에 사용하지는 않기 때문에 사용하지 않는 앱에서 OS 스왑을 신경 쓰지 않으므로 디스크 I / O를 더 빨리 얻거나 다른 VM을 시작할 수 있습니다. 지금까지이 기계가 바뀌는 것을 보지 못했습니다!


0

스왑 파일이 남아있는 모든 HD 공간을 천천히 먹은 다음 다시 시작해야하기 때문에 2011 Macbook air (4GB RAM, 128GB SSD)에서 스왑 파일을 비활성화했습니다. 이런 식으로 아이디어는 내가 더 적은 프로그램을 실행한다는 것입니다.

이것이 실제로 작동하는지 또는 "유선"메모리를 지우기 위해 어쨌든 다시 시작해야하는지 지금은 잘 작동하는 것으로 보입니다. 메모리가 실제로 가득 차면 SSD에 메모리가 부족할 때와 마찬가지로 컴퓨터 속도가 느려지지만 응용 프로그램을 종료하자마자 훨씬 빠르게 복구됩니다. (실제로 SSD가 가득 찰 때가 아닌 응용 프로그램을 종료 할 수있었습니다).

나는 그것이 어떻게 현명하게 안정되는지 볼 수 있지만, 지금까지 나는 행복한 야영 자입니다. 또한 한 번에 더 적은 수의 응용 프로그램 (및 Chrome 탭)을 실행해야하므로 작업에 적합합니다.


0

스왑 파일을 비활성화하는 주된 이유는 속도가 아니기 때문입니다. 디스크 공간입니다.

사용자가 전체 드라이브의 5GB 내에서 일상적으로 실행하는 사용자 인 경우 스왑을 비활성화하면 공간 부족이 계속 발생합니다. 나는 일상적인 브라우징에서 4GB 이상의 스왑 파일을 정기적으로 사용합니다.

구형 컴퓨터에서는 속도가 크게 향상되었습니다. SSD가 장착 된 최신 기계에서는 그렇게 인상적이지 않습니다. (iMac의 OSX 10.0에서 가상 메모리를 사용하면 드라이브 간 파일 복사를 포함하여 많은 작업의 속도가 절반으로 줄어 듭니다).


브레이크가 작동하지 않기 때문에 혼을 고정시키는 것과 비슷합니다. 드라이브가 가득 차면 일부 데이터를 가져옵니다.
Tetsujin

@Tetsujin 해당 드라이브에서 가장 큰 단일 파일이 스왑 파일이었습니다.
aramis

내 요지는 여전히 서있다. 적은 데이터, 더 큰 드라이브 또는 더 많은 RAM이 필요하지 않습니다.
Tetsujin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.