본문 바로가기

Apple

[mac] 다다익램?활성 상태 보기에서 메모리 사용량 보기

윈도우에 '작업관리자'가 있다면, macOS에는 '활성 상태 보기'가 있다.

macOS Majave 기준 '활성 상태 보기'에는 아래와 같이 총 5개의 세부 탭이 나뉘어 있다.

오늘은 메모리 쪽을 이야기한다.

어제 저녁 퇴근 전에 iMovie를 이용해서 동영상 편집을 하다 업로드용 영상으로 추출(export)을 걸어두고, 다른 영상 편집을 시작했다.

그런데 재생 후 정지가 안되어 무슨일인가 했는데 시스템이 행(hang)이 걸린 것이었다.

 

평소에 활성 상태 보기 창을 띄워두고 있어서 메모리 압력을 보니 아래와 같이 빨간색이 눈에 띄었다.

16GB를 가지고 있는 맥북프로

참고로 활성 상태 보기의 메모리 사용량에 대해서는 애플 웹사이트에 자세히 나와 있다.

활성 상태 보기 사용 설명서 > Mac용 활성 상태 보기에서 메모리 사용량 보기

Apple 의 설명

메모리 압력: 메모리를 프로세스의 요구에 맞추어 얼마나 효율적으로 사용하는지 시각적으로 알려준다.

정확한 알고리즘은 공개를 하고 있지 않지만 아래에 나오는 여유 메모리, 스왑률, 와이어드 메모리 및 캐시 파일 메모리로 결정된다고 한다.

높이로 압력률을 1차적으로 보여주고 압력을 견딜 수 있는지를 색상으로 알려준다. 위에 그림을 보면 알 수 있듯이 동일한 주황색이지만 단순히 높이만으로 색상을 표현하지 않는다는 것을 알 수 있다.

비교를 위해 점선을 추가했는데 주황색의 범위가 좌우가 다름을 알 수 있다.

물리적 메모리는 실제 시스템에 설치된 RAM이다. 맥북계열은 보통 구입시에 결정되고, 아이맥의 경우는 추가로 확장이 가능하다.

사용된 메모리는 실제 사용 중인 RAM의 용량을 나타낸다. 세부적으로 3가지 카테고리로 나누고 이들의 합이다.

 - 앱 메모리: 애플리케이션에서 사용되고 있는 메모리이다.

 - 와이어드 메모리: 시스템 작동에 필요한 메모리이다. 캐시할 수 없는 메모리이기 때문에 다른 앱에서 사용할 수 없는 부분이다.

 - 압축: 더 많은 용량의 RAM을 사용할 수 있도록 압축된 메모리를 나타낸다. 압축에 대한 정확한 알고리즘은 알 수 없으나 메모리 사용량이 부족해지면 비활성중인 애플리케이션의 메모리를 압축해서 활성된 애플리케이션이 사용할 수 있는 추가 메모리를 확보한다고 한다. 당연히 압축하는데 CPU 등의 리소스를 활용하므로 오버헤드는 필연적이다.

캐시된 파일: 시스템에서 성능을 향상을 위해 분류된 영역으로 애플리케이션을 다시 열 때 성능 향상에 도움이 된다고 한다. 애플리케이션이 실행되면 디스크로 부터 RAM으로 올리는 작업을 해야 한다. HDD보다 상대적으로 빠른 SSD라 하더라도 RAM에 비하면 느린 장치이므로 RAM에 캐시를 해두는 식으로 trade off 를 하는 것이다.

사용된 스왑 공간:  이것은 엄밀히 따지면 메모리 사용량이 아니고 RAM과 연관된 하드디스크의 사용량이다. 윈도우에서 가상메모리라고 부르는 개념과 일치한다.

 

카페의 질문

Q. SSD를 쓰면 RAM을 더 잘 활용할 수 있게 되나요? 혹시 SSD를 쓴다고 더 어플을 많이 띄울 수 있거나 그런 건 없나요? ref

질문에는 적혀있지는 않지만 HDD를 사용할 때 vs SSD를 사용할 때의 비교가 숨어있다고 추측이된다.

RAM과 디스크와 연관되는 것은 활성 상태에서 '사용된 스왑 공간'과 관련이 있다. 즉, 가상메모리를 쓰는데 도움이 되느냐 여부이다.

가상메모리라는 개념이 부족한 메모리를 디스크를 활용해서 더 많은 프로세스를 돌리기 위한 것이 목적이니 맞는 이야기이다.

 

하지만 더 앱을 많이 띄울 수 있는지랑은 디스크의 크기가 좌우할 것이다. SSD가 HDD에 비해 용량대비 가격이 더 비싸기 때문에 단순히 가성비를 따졌을 때는 같은 가격이면 HDD가 더 큰 용량을 구입할 수 있을 것이다.

하지만 모든 것은 trade-off 이다. SSD는 가격에서는 불리하지만 성능에서는 HDD에 비해 상대적으로 더 빠르다.

가상 메모리라는 것도 데이터의 이동이므로 비용이 수반되는 부가적인 작업이라 SSD가 더 윤택하게 사용할 수 있다.

 

나의 경험

어제 16G 맥북프로에서 빨간 메모리 압력을 보고 나서 집에서 40G RAM이 장착된 iMac으로 테스트를 해보았다.

40GB iMac, 나에게는 충분한 RAM이다.

비슷하게 애플리케이션을 띄어서 활성 상태 보기를 확인했다.

처음 부팅후 얼마 안되었을 때는 아래와 같았다.

사용된 메모리가 16.43GB으로 16GB 맥북 프로의 RAM을 초과한다.

눈에 띄었던 것은 사용된 메모리 중 압축영역스왑 공간이었다.

압축영역: 위에서 살펴보았지만 메모리의 사용량이 최대에 도달하지 않았으니 굳이 앱의 메모리를 압축할 필요가 없다고 판단할 수 있다.

스왑 공간: 마찬가지로 메모리가 부족하지 않는데 굳이 더 느린 디스크로 데이터를 swap 할 필요가 없다.

 

혹시 앱을 많이 사용하지 않아서 이런 결과가 나오지 않았을까 싶어서 좀더 메모리를 많이 먹는 앱들을 띄어보았다.

사용된 메모리가 16G에서 25G로 올라갔다.

하지만 여전히 압축된 메모리와 스왑은 0바이트였다.

앱들을 종료를 하면?

이번에 반대로 추가로 실행한 앱들을 종료해보았다.

25G에서 18G로 줄어들었다.

처음 실행하면서 증가한만큼이 종료되지 않았음을 알 수 있다. 사용된 메모리는 7.54G 감소했는데 늘어난 캐시된 파일은 별로 줄지 않음을 알 수 있다. 이는 다음에 종료된 앱을 다시 실행시킬 때를 성능 향상을 위해 메모리 상에 확보(reserve)해 놓았다고 볼 수 있다.

trade-off

하지만 모든 것은 trade-off이다. 추가적인 메모리를 위해서는 돈이 더 필요하다.

또한 회사에서 사용하는 맥북프로의 경우 RAM이 납땜되어 더 이상의 추가 확장이 불가능하다. 따라서 애초에 더 큰 RAM을 가진 장치를 구입했어야 한다.

하지만 처음 장비를 구입하거나 무엇을 하는지 경험이 없는 상태에서 나에게 적합한 RAM의 크기를 알기란 어려울 수 있다.

 

결국 경험을 통해 다음 번 구입시에는 반영해서 적절하게 선택을 할 수 밖에 없을 수도 있다.

RAM 다이어트

16GB의 램이지만 불필요한 프로그램이 올라와있지 않은가 점검을 했다.

현대 사용되지 않는 JavaApplet 등 쥐어짰다. launchd에서 실행하는 여러 데몬, 에이전트 등을 제외시켰다.

점검해볼 경로는 터미널 사용 설명서 > Mac용 터미널에서 launchd로 스크립트 관리하기 를 참고하면 된다.

위의 5개의 경로중 3가지를 중점을 두면서 보면된다.

/라이브러리/LaunchDaemons
/라이브러리/LaunchAgents
~/라이브러리/LaunchAgents

다이어트 이후 RAM 지표는 아래와 같이 변했다.

사용된 스왑 공간이 0바이트가 눈에띈다. 압축된 메모리가 있는 걸로 봐서 RAM이 iMac처럼 윤택하지는 않은듯.

참고용 이전 상황

16GB를 가지고 있는 맥북프로

퇴근전 다시 snapshot

부팅 후보다는 높아졌는데 확실히 이전보다는 낫다. 드디어 스왑이 추가되었다.