Vmware Workstation상의 Guest OS를 일시정지 하면 Guest OS가 위치한 Host OS Disk의 I/O가 100%로 부하가 걸리면서 수분간 쓰기작업이 이루어지는 현상이 있다. 이 현상 때문에 Host OS를 재부팅하려고 하면 종료 시간이 지연 되기도 한다.
이 현상을 줄이기 위해선 Guest OS의 메모리를 Host OS의 메모리로만 공유할 수 있도록 하면 된다.
그런데 Host OS의 물리 메모리가 충분하다는 전제하에 설정을 해야 효과가 있고, 부족한데 설정을 하면 Host OS에서 스왑이 일어나서 시스템 전체가 느려져서 역효과가 날 수 있다.

1. Page Sharing off
게스트 VM OS의 메모리 할당에 Page Sharing 스왑 기법을 사용한다.
Guest OS의 데이터가 위치하는 곳이 SSD이면 그래도 괜찮은데 HDD일 경우 꽤 오랜시간 동안 쓰기작업이 이루어진다.
따라서 해당 게스트 OS의 .vmx파일을 메모장으로 열고 아래 내용을 추가하고 저장한다.
sched.mem.pshare.enable = "FALSE"

2. Memory Trimming off
Guest OS에서 오랫동안 사용하지 않는 메모리는 Host OS에 반납하고, 그내용은 스왑파일에 쓰게 되면서 I/O가 발생한다.
Page Sharing을 안쓰게되면, 이것도 같이 쓰지 않으므로 꺼둔다.
따라서 해당 게스트 OS의 .vmx파일을 메모장으로 열고 아래 내용을 추가하고 저장한다.
MemTrimRate = 0

3. Additional memory
Guest OS의 메모리를 어떤식으로 할당할지 설정.
"Fit all virtual machine memory into reserved host RAM"을 설정하여, Host의 RAM만 사용할 수 있도록 한다.
기본값은 "Allow some virtual machine memory to be swapped"인데,
Page Sharing을 쓰지 않는다면 이것또한 동작하지 않으므로 설정을 바꾼다.
메뉴 Edit -> Preferences -> Memory -> Additional memory -> "Fit all virtual machine memory into reserved host RAM"

* 본인 생각엔 3 설정만으로도 1, 2번 설정을 안해도 모든 Guest OS에 적용이 되지 않을까 싶다.

* 물리 머신의 경우 S3 대기(절전)모드 진입 시 메모리(램)에 상주된 데이터를 날리지 않기 위해 메모리에만 전원을 인가하고 메모리에 상주된 데이터를 디스크에 옮기지 않고 끈다. 때문에 대기모드의 진입과 탈출이 매우 빠르다. 그런데 Guest는 Host에 종속된 위치이기 때문에 Guest OS는 일시정지(대기모드)시 Guest OS의 메모리의 내용을 Host OS의 디스크에 쓰기 작업을 해야만 된다. 그래야만 Host OS가 꺼졌다 켜져도 Guest OS의 일시정지(대기모드)의 연속성을 보장할 수 있다. 따라서 위의 방법들을 쓴다해도 일시정지시 Disk I/O 부하는 피할 수 없다. 하지만 상황에 따라 조금은 더 빠르게 Guest OS의 일시정지 작업이 이루어 질 수 있겠다. 가장 좋은 방법은 Guest OS 영역을 SSD로 사용 하는것이다.

VMWare Guest OS 일시정지시 Host OS Disk I/O 부하 줄이기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다