티스토리 뷰


VM의 메모리에 대한 이해.


VM에서의 메모리는 2가지 타입으로 확인할 수  있습니다.

모니터탭에서의 리소스할당에서 확인을 할수 있는데, 호스트메모리와 게스트메모리가 있습니다.

처음에는 많이 헷갈렸습니다


강사에게 설명을 들어도 이해가 쉽게 되지 않고, 문제가 없으면 그냥 넘어가는게 속 편 했는데 이제 조금 눈이 뜨이니까 한번 설명을 해 봅니다.



호스트 메모리에서는 2개의 메모리를 확인할수 있습니다.(사용됨 / 오버헤드)




먼저 "사용됨"은 명확합니다


VM이 사용된 메모리입니다.


그리고 오버헤드는 현재 VM커널에서 사용되는 메모리의 총 량입니다.

일반적으로 사용되는 page, buffer등입니다.

그리고 아래의 구성됨은 뭐 다들 알고 계시는 할당된 메모리입니다. VM이 사용할수 있는 VM의 총량이기도 합니다.

이제 게스트 메모리를 보겠습니다.


먼저 보시면 활성, 전용, 공유등등 많은 메모리 항목들이 있습니다.

조금 더 복잡할수 있습니다.

활성게스트메모리는 현재 이 VM이 로드되어 있는 메모리를 뜻하며 전용은 이 VM이 공유메모리와 기타 자원메모리를 뺀 전용 메모리를 말하는 것입니다.

위의 메모리보다 더 중요하게 관심있게 봐야 하는 것이 공유됨벌룬” “압축됨” “스왑됨 입니다.

4가지의 메모리는 절대적으로 깨끗해야 합니다.


공유됨이란 TPS 공유메모리의 총량입니다.
TPS
Transparent Page Sharing 으로 한대의 서버위에 여러대의 VM이 실행되고 대부분이 같은 OS에 비슷한 app을 사용할 때 항상 실행되는 기본적인 DLL, exe등 이런 내용을 공유하여 실제 물리적 메모리공간을 효율적으로 사용하는 것입니다.


스왑메모리의 값이 올라간다는 것은 커널에서의 스왑이 발생하고 있다는 것이고,

압축은 할당된 메모리가 부족해 압축이 일어난다는 것입니다.

벌룬도 마찬가지로 해당 VM에서 메모리 사용량이 빠듯하면 중요하지 않은 메모리를 회수하기 위해  벌루닝을 한다는 것입니다.

여기서 벌룬이란,
물리적 서버의 전체 메모리 크기가 부족할 경우 VM커널은 가상머신들 안에 설치된 벌룬컨트롤러에게 명령을 내려 게스트 OS 내부의 메모리를 팽창시키도록하여 메모리 점유율을 올리게 됩니다. 게스트 OS는 아무 이유없이 늘어가는 메모리 점유율을 줄이기 위해 자신의 스왑기능을 이용하여 메모리 내용들은 가상 메모리(Disk) 쪽으로 페이지 아웃시키게 되고, 벌룬컨트롤러는  이렇게 비워진 메모리 페이지 위치를 VM커널에게 알려주고, 커널은 그 위치에 해당하는 호스트 물리 메모리 주소를 비우게 되어, 물리 메모리의 공간을 확보하게 됩니다.

이후에, 호스트 물리 메모리에 여유가 생긴다면 반대로 명령을 내려 메모리를 수축시키는 명령을 내립니다..(VMware vsphere5 설명서)



암튼 궁극적으로 이 4가지의 값은 “0” 이어야 합니다.


사용자의 VM이 늦다거나 버벅거린다거나, 혹은 excel등이 5개만 띄워도 Error가 발생하면 반드시 메모리 부분을 들여다 보시기 바랍니다.

 

 

.



댓글