vSphere CPU/Memory 가상화

INYEONG KIM·2024년 8월 18일
post-thumbnail

vSphere CPU 가상화 핵심 기술

CPU 가상화란 CPU Core 리소스를 ESXi가 실시간으로 여러 대의 VM에 동적으로 분배하는 것을 의미

  1. CPU 리소스 로드밸런싱
    • EXSi 는 물리적인 CPU를 가상화하여 VM에 할당 가능
    • EXSi는 이러한 CPU 리소스를 가상 CPU(=vCPU) 단위로 할당하여 VM을 동작시킴
  2. 시분할방식 프로세스 처리 (Time-Slice)
    • VM들의 CPU 리소스 요청을 동적으로 분배 → 특정 CPU의 부하가 집중 방지
    • EXSi 서버는 물리적인 CPU 및 vCPU에 대한 모니터링 실시 → 과도한 부하 발생시 Time-Slice로 프로세스를 처리하도록 함
  3. 몇 십 ms 단위로 전체 CPU 체크
    • 물리 CPU 상태를 작은 시간마다 체크하여 여유있는 CPU 리소스를 확인 → 전체 VM에 골고루 할당

vSphere 메모리 가상화 핵심 기술

메모리 가상화 기술은 크게 "메모리를 효율적으로 관리하는 기술" 과 "시스템을 보호하는 기술"로 분류

  1. TPS (Transparent Page Sharing)
    • 메모리를 효율적으로 관리하기 위한 기술 1
    • Guest OS들이 동일한 정적 Page를 공유해서 사용하는 기능
      • ex) NT Server를 실행 시 VM과 상관 없이 동일한 메모리 Page를 읽는 경우가 다량 발생
        → 이 경우 Guest OS 별로 해당 Page를 만들지 않고, 하나의 메모리 위치로 통합 한 뒤 공유해서 사용하면 메모리를 최적화 가능
    • VMKernel 이 VM의 메모리 Page를 검사
      → 이전에 동일한 Page가 저장되어있는 경우
      → 새로 사본을 생성하지 않고 해당 위치를 그대로 읽음(=하나의 메모리 위치로 통합)
    • ESXi 입장에서 동일한 가상 Page에 대해 같은 HW Page 만 참조함으로써 메모리 최적화
  2. 메모리 벌루닝 (Memory Ballooning)
    • 메모리를 효율적으로 관리하기 위한 기술 2
    • Idle 상태의 VM이 보유한 메모리영역을 회수하여 다른 VM에 할당해주는 기능
    • VMKernel이 Active하게 동작하지 않는 VM에 대해 Ballooning 작업을 수행
      • VM에 설치되어 있는 VMware Tool의 Driver를 통해 이루어짐
    • 전체 흐름
      1. VMKernel이 모니터링 후 Idle VM에 Ballooning 진행
      2. 해당 명령을 받은 Idle VM의 메모리는 자신의 메모리가 가득 찼다고 느낌 (=실제로는 안쓰는 영역)
      3. Idle VM이 자신의 메모리를 Swap Out 시킴 → 물리서버 였다면 Disk에 Swap
      4. Idle VM으로부터 회수한 메모리(=Swap Out한 메모리)를 VMKernel이 받아서 Busy한 VM에 할당
  3. 메모리 압축
    • 시스템을 보호하기 위한 기술 1
    • 메모리에 중복된 데이터가 있는 경우 메모리 안에서 압축하는 기능
    • VM의 메모리 요구가 발생 + 메모리를 회수할 수 없는 상황에 압축 진행
    • VM 중 우선순위가 낮은 VM들의 메모리 영역을 압축
      → 물리 메모리의 압축 캐시(Compression Cache)에 저장
      → 회수된 메모리 영역을 메모리가 부족한 VM에 할당
    • 압축된 메모리 영역에 엑세스할때 물리 메모리 상에서 압축을 풀면서 접근해야함
      → 약간의 성능저하가 발생 가능하지만 메모리 내에서 이루어지기 때문에 큰 영향 X
  4. VMKernel 스왑
    • 시스템을 보호하기 위한 기술 2
    • 물리 메모리가 부족한 경우 VMKernel이 VM의 메모리를 Disk의 swap 파일에 Swap-out 하는 기능
    • 위의 3가지 방법(TPS, Ballooning, 메모리 압축)을 하고도 메모리가 부족한 경우라면 Swap을 발생시켜 Disk로 메모리 내용을 Swap Out 시킴
    • VMKernel Swap은 모든 VM이 Busy 한 상황에서 발생 → Disk IO 발생 → 성능에 영향 미침
profile
미래의 저를 위해 작성하는 중입니다 🙆‍♂️

0개의 댓글