Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 5.2. VMWare - 사용 후기. [링크 복사], [링크+제목 복사],
조회: 18390
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 46  47  48  49  50  51  52  53  54  [55]  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12565정성태3/17/202113599오류 유형: 704. curl.exe 실행 시 dll not found 오류
12564정성태3/16/202114442VS.NET IDE: 160. 새 프로젝트 창에 C++/CLI 프로젝트 템플릿이 없는 경우
12563정성태3/16/202117366개발 환경 구성: 551. C# - JIRA REST API 사용 정리 (3) jira-oauth-cli 도구를 이용한 키 관리
12562정성태3/15/202118096개발 환경 구성: 550. C# - JIRA REST API 사용 정리 (2) JIRA OAuth 토큰으로 API 사용하는 방법파일 다운로드1
12561정성태3/12/202116862VS.NET IDE: 159. Visual Studio에서 개행(\n, \r) 등의 제어 문자를 치환하는 방법 - 정규 표현식 사용
12560정성태3/11/202117845개발 환경 구성: 549. ssh-keygen으로 생성한 PKCS#1 개인키/공개키 파일을 각각 PKCS8/PEM 형식으로 변환하는 방법
12559정성태3/11/202118137.NET Framework: 1028. 닷넷 5 환경의 Web API에 OpenAPI 적용을 위한 NSwag 또는 Swashbuckle 패키지 사용 [2]파일 다운로드1
12558정성태3/10/202117266Windows: 192. Power Automate Desktop (Preview) 소개 - Bitvise SSH Client 제어 [1]
12557정성태3/10/202115461Windows: 191. 탐색기의 보안 탭에 있는 "Object name" 경로에 LEFT-TO-RIGHT EMBEDDING 제어 문자가 포함되는 문제
12556정성태3/9/202113655오류 유형: 703. PowerShell ISE의 Debug / Toggle Breakpoint 메뉴가 비활성 상태인 경우
12555정성태3/8/202116969Windows: 190. C# - 레지스트리에 등록된 DigitalProductId로부터 라이선스 키(Product Key)를 알아내는 방법파일 다운로드2
12554정성태3/8/202116574.NET Framework: 1027. 닷넷 응용 프로그램을 위한 PDB 옵션 - full, pdbonly, portable, embedded
12553정성태3/5/202116512개발 환경 구성: 548. 기존 .NET Framework 프로젝트를 .NET Core/5+ 용으로 변환해 주는 upgrade-assistant, try-convert 도구 소개 [4]
12552정성태3/5/202116010개발 환경 구성: 547. github workflow/actions에서 Visual Studio Marketplace 패키지 등록하는 방법
12551정성태3/5/202114372오류 유형: 702. 비주얼 스튜디오 - The 'CascadePackage' package did not load correctly. (2)
12550정성태3/5/202114077오류 유형: 701. Live Share 1.0.3713.0 버전을 1.0.3884.0으로 업데이트 이후 ContactServiceModelPackage 오류 발생하는 문제
12549정성태3/4/202115491오류 유형: 700. VsixPublisher를 이용한 등록 시 다양한 오류 유형 해결책
12548정성태3/4/202116579개발 환경 구성: 546. github workflow/actions에서 nuget 패키지 등록하는 방법
12547정성태3/3/202117207오류 유형: 699. 비주얼 스튜디오 - The 'CascadePackage' package did not load correctly.
12546정성태3/3/202117077개발 환경 구성: 545. github workflow/actions에서 빌드시 snk 파일 다루는 방법 - Encrypted secrets
12545정성태3/2/202119863.NET Framework: 1026. 닷넷 5에 추가된 POH (Pinned Object Heap) [10]
12544정성태2/26/202120038.NET Framework: 1025. C# - Control의 Invalidate, Update, Refresh 차이점 [2]
12543정성태2/26/202118054VS.NET IDE: 158. C# - 디자인 타임(design-time)과 런타임(runtime)의 코드 실행 구분
12542정성태2/20/202119706개발 환경 구성: 544. github repo의 Release 활성화 및 Actions를 이용한 자동화 방법 [1]
12541정성태2/18/202117304개발 환경 구성: 543. 애저듣보잡 - Github Workflow/Actions 소개
12540정성태2/17/202118458.NET Framework: 1024. C# - Win32 API에 대한 P/Invoke를 대신하는 Microsoft.Windows.CsWin32 패키지
... 46  47  48  49  50  51  52  53  54  [55]  56  57  58  59  60  ...