Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 5.2. VMWare - 사용 후기. [링크 복사], [링크+제목 복사],
조회: 18469
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기

VMWare로 만든 VM을 써본 간략한 후기를 적어봅니다. (따라서, 지극히 개인적인 의견입니다.)

우선, 제가 애용하는 터미널 서비스로 역시 이번에도 접속해서 사용해 보았고요. 이미 설명한 대로, 64bit Windows EE에 가상 2-way SMP, 메모리 1GB 설정으로 VM을 만들었습니다.
사실, 그 이외의 사양이라면 차라리 Virtual Server를 쓰는 것이 낫지요. 굳이 64bit 머신에서 WOW64를 통해서 VMWare를 구동시킬 필요는 없어보이니까요.

처음에는 64bit / 2way SMP에 대한 가상화에 대해서 무척 매력이 있다고 생각했는데요.
정작 사용을 해보니, MS VPC와 성능상으로 무척 대비가 되는 인상을 받게 되었습니다.
뭐랄까, Microsoft는 OS를 소유한 회사이니만큼 (느낌상, 근거 없음) 최적화를 했지만, VMWare는 그렇지 않다는 느낌을 받게 되는군요.

실제로, VM을 재부팅한다든가 할 때에 VMWare에서의 하드를 긁어대는 소리는 정말 위험하지 않을까 싶을 정도로 요란하더군요.
반면에 Virtual Server는 상당히 조용하게 재부팅이 이루어집니다.

또한, 가상 VM을 동작시키는 방식에서도 차이를 보이는 것이, VMWare는 하나의 "프로세스"로 띄워서 가상화 머신을 동작시키게 됩니다. 반면 VPC는 커널 측에서 VM을 처리하는 것으로 보입니다. 실제로, VM을 띄우는 2개의 환경이 Task Manager에서 다음과 같이 확인이 되어집니다.

[그림 1: Virtual Server의 프로세스 - 현재 VM 3개 떠 있는 상태]
VPC 프로세스

[그림 2: VMWare 프로세스 - 현재 VM 1개 떠 있는 상태]
VMWare 프로세스

한번 비교해 볼까요?
[그림 1]은 VM이 3개 떠 있는데도 그것을 커널상에서 처리하기 때문에 보이지 않는 것을 볼 수 있습니다. 실제로 VPC에 할당된 메모리조차도 작업 관리자에서는 보이지 않고 전체적인 메모리 사용률로만 알 수 있습니다.
반면에 [그림 2]는 VM이 한 개 떠 있는 vmware 처리 화면인데요. VM이 늘어날 수록 vmware-vmx.exe*32 프로세스가 하나씩 추가되게 됩니다. 메모리 역시 VM에 할당한 메모리로 늘어납니다.

조금 사용하다 보니, MS Virtual Server와 비교해서 너무나 잦은 디스크 액세스와 CPU 점유로 인해서 도저히 ^^; 짜증이 나서 못 쓰겠습니다.
때때로, 해당 VM의 잦은 디스크 액세스와 CPU 소모율로 인해서 VM 머신은 물론이고, 심지어 Host OS에 대한 터미널 세션에서의 UI 반응까지도 급격히 저하시키는 현상이 발생하곤 합니다.

그리고, 가끔씩 아래와 같은 이해할 수 없는 현상이 발생하는 것도 있습니다.

[그림 3: VMWare 프로세스 소모 - VM은 아무런 동작도 하지 않고 있는 중]
VMWare 프로세스

위의 그림에서 보시는 것처럼 CPU 소모가 77%를 차지하고 있습니다. 이런 현상이 제법 오래 지속되는데 그 이유를 도저히 모르겠습니다. 해당 VM의 Guest OS의 작업 관리자로 확인해 보면 어떠한 작업도 하지 않고 있음에도 불구하고 이렇게 Host OS의 CPU 자원을 잡아먹는 현상이 있는 것입니다.

CPU가 잠잠해졌을 때에도, 디스크 액세스는 꾸준히 발생합니다. 성능 모니터로 확인해 본 결과 꾸준히 Page Faults/sec가 발생하는 것을 확인할 수 있습니다.


결론적으로, 저는 VMWare 서비스를 내려버리고 말았습니다. 그나마 64bit VM 설치해 놓은 것이 아까워서 프로그램 삭제까지는 안했습니다.
VMWare의 Linux 버전에서는 어떨런지는 모르겠지만, 이렇게 심한 자원소모를 발생하는 VMWare가 어떻게 그렇게 높은 시장 점유율을 유지하는 지 다소 이해가 안되더군요.






[최초 등록일: ]
[최종 수정일: 12/2/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11862정성태4/7/201920156개발 환경 구성: 437. .NET EXE의 ASLR 기능을 끄는 방법
11861정성태4/6/201919618디버깅 기술: 126. windbg - .NET x86 CLR2/CLR4 EXE의 EntryPoint
11860정성태4/5/201923471오류 유형: 527. Visual C++ 컴파일 오류 - error C2220: warning treated as error - no 'object' file generated
11859정성태4/4/201920699디버깅 기술: 125. WinDbg로 EXE의 EntryPoint에서 BP 거는 방법
11858정성태3/27/201921608VC++: 129. EXE를 LoadLibrary로 로딩해 PE 헤더에 있는 EntryPoint를 직접 호출하는 방법파일 다운로드1
11857정성태3/26/201919515VC++: 128. strncpy 사용 시 주의 사항(Linux / Windows)
11856정성태3/25/201919772VS.NET IDE: 134. 마이크로소프트의 CoreCLR 프로파일러 리눅스 예제를 Visual Studio F5 원격 디버깅하는 방법 [1]파일 다운로드1
11855정성태3/25/201921923개발 환경 구성: 436. 페이스북 HTTPS 인증을 localhost에서 테스트하는 방법
11854정성태3/25/201917577VS.NET IDE: 133. IIS Express로 호스팅하는 사이트를 https로 접근하는 방법
11853정성태3/24/201920385개발 환경 구성: 435. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면? - 두 번째 이야기 [1]
11852정성태3/20/201919606개발 환경 구성: 434. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면?파일 다운로드1
11851정성태3/19/201923359Linux: 8. C# - 리눅스 환경에서 DllImport 대신 라이브러리 동적 로드 처리 [2]
11850정성태3/18/201922388.NET Framework: 813. C# async 메서드에서 out/ref/in 유형의 인자를 사용하지 못하는 이유
11849정성태3/18/201921773.NET Framework: 812. pscp.exe 기능을 C#으로 제어하는 방법파일 다운로드1
11848정성태3/17/201918498스크립트: 14. 윈도우 CMD - 파일이 변경된 경우 파일명을 변경해 복사하고 싶다면?
11847정성태3/17/201922967Linux: 7. 리눅스 C/C++ - 공유 라이브러리 동적 로딩 후 export 함수 사용 방법파일 다운로드1
11846정성태3/15/201921611Linux: 6. getenv, setenv가 언어/운영체제마다 호환이 안 되는 문제
11845정성태3/15/201921763Linux: 5. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) [3]
11844정성태3/14/201923083개발 환경 구성: 434. Visual Studio 2019 - 리눅스 프로젝트를 이용한 공유/실행(so/out) 프로그램 개발 환경 설정 [1]파일 다운로드1
11843정성태3/14/201918037기타: 75. MSDN 웹 사이트를 기본으로 영문 페이지로 열고 싶다면?
11842정성태3/13/201916383개발 환경 구성: 433. 마이크로소프트의 CoreCLR 프로파일러 예제를 Visual Studio CMake로 빌드하는 방법 [1]파일 다운로드1
11841정성태3/13/201916696VS.NET IDE: 132. Visual Studio 2019 - CMake의 컴파일러를 기본 g++에서 clang++로 변경
11840정성태3/13/201918319오류 유형: 526. 윈도우 10 Ubuntu App 환경에서는 USB 외장 하드 접근 불가
11839정성태3/12/201922238디버깅 기술: 124. .NET Core 웹 앱을 호스팅하는 Azure App Services의 프로세스 메모리 덤프 및 windbg 분석 개요 [3]
11838정성태3/7/201925867.NET Framework: 811. (번역글) .NET Internals Cookbook Part 1 - Exceptions, filters and corrupted processes [1]파일 다운로드1
11837정성태3/6/201939807기타: 74. 도서: 시작하세요! C# 7.3 프로그래밍 [10]
... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...