현장 트러블슈팅: Nutanix AHV 환경 Windows VM 콘솔 버벅임(Slow) 해결의 모든 것

고객사에서 VM콘솔이 느려지는 현상이 발생했는데, Nutanix 환경 탓을 많이 하기에 이번에는 Slow 현상에 대해 이야기 하고자 합니다. 한번 이야기들 들어 보세요. 

장애 현상: 키보드 치고 커피 한 모금 마셔야 글자가 뜬다?

며칠 전 중요 고객사 인프라 정기점검을 나갔을 때 일이다. 평소처럼 Nutanix Prism Central에 접속해서 잘 돌아가고 있는 Windows Server VM 하나를 열어 콘솔 창을 띄웠다. 분명 VM의 CPU나 메모리 지표는 널널해서 콧노래를 부르며 로그인 패스워드를 쳤는데, 화면에 별표(*)가 찍히는 데 무려 3초가 걸렸다. 마우스는 마치 진흙탕에 빠진 것처럼 질척거리고 창 전환은 먹통 수준이었다. 뒤통수에 꽂히는 고객의 따가운 시선을 애써 모른 척하며 원인을 찾기 시작했다.

  • 타이핑 딜레이: 키보드 입력 후 화면에 텍스트가 표시될 때까지 수 초 지연
  • 마우스 프리징: 포인터가 뚝뚝 끊기거나 멈춤 현상 발생
  • 화면 렌더링 지연: 열려있는 애플리케이션 간 창 전환 시 극심한 반응 속도 저하
현장 체크포인트: 이런 증상이 나타나면 당황해서 VM 스펙(vCPU, RAM)부터 무작정 늘리는 주니어들이 많다. 하지만 Prism 지표를 잘 보라. VM 자체의 퍼포먼스는 지극히 정상이다. 문제는 시스템 내부가 아니라 '콘솔의 시각적 인터랙션' 그 자체에 있다. 클러스터와 내 노트북 사이의 네트워크 레이턴시가 조금이라도 튀면 증상은 기하급수적으로 악화된다.

 

원인 분석: 왜 AHV는 윈도우 화면을 버거워할까?

이 현상의 근본적인 원인은 하이퍼바이저(AHV)가 게스트 OS(Windows) 내부에서 어떤 일이 벌어지는지 완벽하게 투시할 수 없다는 데서 출발한다. Prism 콘솔은 기본적으로 VNC(Virtual Network Computing) 방식을 베이스로 쓴다. 이게 무슨 말이냐면, 화면의 픽셀 값이 변할 때마다 그 변화된 이미지 데이터를 통째로 네트워크에 던진다는 뜻이다.

윈도우 10이나 윈도우 서버 2019 이상 최신 버전들은 바탕화면 렌더링을 위해 DWM(Desktop Window Manager)을 빡세게 돌린다. 창에 그림자를 넣고, 투명도 애니메이션을 떡칠해 놓았으니 화면 픽셀이 1초에도 수천 번씩 바뀐다. AHV 입장에서는 매 프레임마다 파싱해야 할 그래픽 데이터가 산더미처럼 쌓이면서 렌더링 병목이 생기는 것이다. 하드웨어 가속도 없는 일반 VM 환경에서 이 무거운 화면 스크래핑(Scraping)을 다 CPU로 처리하려니 브라우저 콘솔이 버틸 재간이 없다는 뜻.


해결책 1단계: 보안팀과 싸워서라도 RDP를 뚫어라

가장 깔끔하고 제조사(Nutanix)에서도 공식 문서(KB-8379)를 통해 권장하는 방법은 Prism UI의 내장 VM 콘솔을 버리고 Microsoft Remote Desktop(RDP)을 사용하는 것이다. 하지만 이걸 고객사 보안팀에 설명하는 게 진짜 고역이다. '보안 규정상 내부망 서버에 RDP 포트를 열어줄 수 없습니다'라는 매크로 답변이 돌아오면, 그때부터는 지루한 협상의 영역이다.

RDP 프로토콜은 VNC처럼 화면 픽셀 전체를 멍청하게 긁어오는 방식이 아니다. 화면 그리기에 필요한 그래픽 명령어(GDI)와 텍스트, 압축된 캐시 데이터만 네트워크를 통해 효율적으로 전송하기 때문에 반응 속도 자체가 차원이 다르다. 대역폭이 좁거나 지연 시간이 긴 망에서도 프레임 드랍 없이 쾌적하게 윈도우를 제어할 수 있다. 외부망에서 다이렉트로 치고 들어오는 게 아니라면, 적어도 관리자 대역에서만큼은 RDP 포트(TCP 3389)를 열어달라고 끝까지 물고 늘어져야 한다. 서버 관리자들의 작업 효율이 박살나면 결국 그 피해는 고스란히 서비스 지연으로 이어지기 때문이다.


해결책 2단계: 프레임 버퍼 다이어트, 시각 효과 강제 종료

물론 현장에서는 'RDP 오픈은 절대 불가합니다. 그냥 뚫려있는 Prism 콘솔에서 해결해 주세요'라는 윗선의 철벽 방어를 심심치 않게 만난다. 방화벽 정책 하나 바꾸려면 결재를 세 단계는 타야 하는 대기업 엔터프라이즈 환경에서는 흔한 일이다. 관리자는 당장 서버 세팅을 마쳐야 하는데 콘솔은 타자 치기도 힘들 정도로 뻑뻑하니 미칠 노릇이다. 이럴 때는 게스트 OS 내부의 성능 옵션을 강제로 다이어트시켜서, AHV가 파싱할 프레임 버퍼의 복잡도를 물리적으로 확 낮춰버려야 한다. 윈도우가 화면을 그리는 행위 자체를 단순하게 만들어서 스크래핑 부하를 줄이는 꼼수이자 가장 확실한 우회 타격이다.

[시각 효과] 로 이동한 다음  [최적의 성능을 위해 조정] 옵션을 선택하는 장면
[시각 효과] 로 이동한 다음  [최적의 성능을 위해 조정] 옵션을 선택

위 화면과 같은 시스템 속성 창에 진입하는 방법은 윈도우 좀 만져본 사람이라면 다들 알 거다. 단축키 `Win + Pause/Break`를 누르거나 탐색기에서 '내 PC'를 우클릭해 '속성'으로 들어간다. 그다음 '고급 시스템 설정'을 누르고 '고급' 탭의 '성능' 섹션에 있는 '설정' 버튼을 냅다 클릭한다. 여기서 나타나는 '시각 효과' 탭이 우리가 오늘 메스로 도려내야 할 타겟이다.

기본값으로 세팅된 '내 컴퓨터에 가장 좋은 설정을 자동으로 선택'을 가차 없이 버리고 '최적 성능으로 조정(Adjust for best performance)' 라디오 버튼을 꾹 눌러준다. 이렇게 하면 창 아래 그림자 표시, 마우스 포인터 그림자, 창을 최소화하거나 최대화할 때 부드럽게 줄어드는 애니메이션, 심지어 마우스 드래그 시 반투명한 선택 사각형 표시 같은 쓸데없는 윈도우 그래픽 효과가 싹 다 체크 해제된다.

이건 단순히 눈에 보이는 효과만 꺼지는 게 아니다. 백그라운드에서 불필요하게 돌아가던 창 관리 프로세스의 리소스 점유율이 바닥으로 떨어지고, 프레임 버퍼에 쌓이는 픽셀 변화량 자체가 극단적으로 줄어든다. 비록 OS UI는 다소 Windows 98 시절처럼 투박하고 각지게 변하지만, 적용 직후 브라우저 콘솔에서 버벅임 없이 쌩쌩하게 날아다니는 마우스 포인터를 보는 순간 그동안의 스트레스가 싹 날아갈 것이다.

해결 방식 구현 난이도 실무 적용 시 장단점
RDP 프로토콜 직접 연결 하 (네트워크 허용 시) 가장 근본적이고 쾌적한 접근. 단, 방화벽 포트 오픈(TCP 3389)을 위한 보안팀 설득이 가장 큰 난관임.
게스트 OS 시각 효과 끄기 최하 (클릭 몇 번) 방화벽 정책 변경 없이 즉시 체감 효과가 엄청남. 단, 윈도우 UI가 다소 촌스러워지는 시각적 너프는 감수해야 함.

실무 주의사항: Sysprep 돌리기 전 이것부터 챙겨라 (VDI 환경)

만약 지금 점검 중인 환경이 단순한 서버 가상화가 아니라 Citrix나 VMware Horizon 등을 올린 VDI(데스크톱 가상화) 환경이라면 방금 한 작업을 개별 사용자의 VM에 땀 뻘뻘 흘리며 적용해 봐야 완벽한 헛수고다. 사용자가 로그아웃하고 VM이 초기화(Non-persistent)되거나 새롭게 프로비저닝 될 때마다 힘들게 만져둔 설정이 허무하게 날아가 버리기 때문이다.

VDI 환경에서는 이 시각 효과 끄기 튜닝을 반드시 마스터 이미지(Master/Gold Image)에 먼저 적용해야 한다. VDI 프로젝트 구축 막바지에 Sysprep 돌리고 이미지 씰링(Sealing)하기 직전에 이거 하나 놓치는 바람에, 오픈 첫날 수백 대 VM 콘솔이 단체로 랙 걸려서 헬프데스크 전화통에 불이 났던 끔찍한 사례를 현장에서 직접 봤다. 배포 전 스냅샷을 찍기 전에 반드시 마스터 이미지에서 '최적 성능으로 조정'이 제대로 물려 있는지 두 번 세 번 더블 체크해라. 클릭 몇 번짜리 체크박스 하나가 수백 명 임직원의 하루 업무 스트레스를 좌지우지한다.

오늘도 힘들게 하루를 버티며, 문제해결에 집중하는 엔지니어분들을 격려 합니다. ^^  

댓글 쓰기

0 댓글

이 블로그 검색

태그

신고하기

프로필

이미지alt태그 입력