virtualization/VMware

VMkernel에 의한 메모리 관리에 대해서

yueisu 2010. 7. 21. 13:37
ESX에서 가상 메모리를 관리하는 방법은 3가지가 있습니다.
① Transparent Page Sharing (TPS)
② Memory Ballooning
③ VMkernel swap


① Transparent Page Sharing (TPS)
Transparent Page Sharing은 가상머신의 메모리 내의 동일한 페이지를 동일한 물리 페이지에 맵핑하는 것을 말합니다.

위의 그림에서 보는 것처럼 각 가상머신이 동일한 메모리 페이지를 갖고있는 것을 검출하여, 물리 메모리상에서 공유하도록 합니다. 이로써 물리 메모리를 효율적으로 관리할 수 있게 됩니다.

② Memory Ballooning
Memory Ballooning은 할당된 가상머신의 메모리를 동적으로 조절하는 방법입니다. vmware tool을 인스톨함으로써 balloon driver(vmmemctl)의 이용이 가능하게 됩니다.

위의 그림에서 보는 것처럼 a의 경우는 충분한 메모리가 있는 경우입니다. 이 경우 balloon driver는 동작을 하지 않습니다. b의 경우 메모리가 부족하여 balloon driver가 가상머신의 OS에 메모리를 요구하게 됩니다. b의 경우는, 리소스 풀의 메모리가 부족할 경우 VMkernel이 부족한 메모리를 확보하기 위해 balloon driver를 제어하여 가상머신으로부터 메모리를 요구하게 됩니다. 가상머신은 자신의 페이지 영역(swap내지는 pagefile)로 강제적으로 페이지아웃시키며, 그 시점에서 VMkernel은 확보한 메모리를 다른 가상머신에 할당을 하게 됩니다.

③ VMkernel swap
VMkernel swap은 Memory Ballooning으로 메모리를 확보할 수 없을 경우, 가상머신의 메모리 페이지를 VMkernel의 swap화일에 복사, 메모리를 확보하는 방법입니다. 이 VMkernel swap 화일은 가상머신 기동시 작성되어 정지하면 삭제됩니다. VMkernel swap은 최후의 수단으로 VMkernel swap을 사용하기 시작하면 급격히 가상머신의 퍼포먼스가 떨어집니다.

메모리의 오버헤드는 Transparent Page Sharing < Memory Ballooning < VMkernel swap으로 VMkernel swap가 가장 큽니다.