윈도우 서버 2012 Hyper-V 위에 올라간 VM의 메모리 사용률이 비정상적으로 높은 경우


그런데 막상 작업 관리자, 리소스 모니터 등에는 특별히 메모리를 많이 사용하는 프로세스가 보이지 않을 때


RamMap 프로그램으로 확인을 해보니 Driver Locked 라는 녀석이 90% 이상을 차지하고 있다면


Dynamic Memory 때문에 그렇습니다.

윈도우 서버 2012의 Hyper-V는 Dynamic Memory를 지원하는데, Dynamic 메모리는 그 특성상 메모리가 부족할 때는 덩치를 키우지만, 메모리가 남아돌 때는 덩치를 줄이지 않습니다. VM이 메모리가 부족하여 한번 덩치를 키우기 시작하면 자신이 차지했던 물리 메모리 영역은 Hyper-V Host에 반환하지 않고 Driver Locked라는 영역으로 확보를 하고 있게 됩니다.

물론 VM 내부적으로 메모리가 필요하게 되면 Driver Locked 영역에서 반환을 해주겠지요. 하지만 외부 물리 메모리 영역에는 반환을 하지 않습니다.

이렇게 되면... 결국 이 VM은 항상 메모리 사용률이 95% 수준을 유지하게 됩니다. 서버 인프라를 운영하는 입장에서는 매우 달갑지 않은 현상입니다. 항상 메모리 사용률이 95% 근처로 관제되기 때문입니다.

따라서 Static Memory로 설정하면 이 문제는 해결됩니다. 개인적으로 운영 서버에 Dynamic Memory를 사용하는 것은 바람직하지 않다고 생각합니다. NUMA 문제도 있고... Dynamic Memory는 Demo나 Lab 환경에서나 사용하는게 좋겠습니다.

이상입니다.