E2 머신 계열의 비용 및 성능 최적화


E2 VM은 대부분의 워크로드 개선을 위한 가치, 성능, 유연성을 제공합니다. E2 VM은 동적 리소스 관리를 사용해서 호스트 머신에서 제공되는 물리적 리소스를 더 효과적으로 활용함으로써 비용 효율성을 높여줍니다. 또한 E2 VM은 커스텀 빌드된 CPU 스케줄러 및 성능 인식 라이브 마이그레이션을 사용해서 성능 우선순위를 지정하고 초과 구독과 관련된 유형의 문제들로부터 워크로드를 보호합니다. 이러한 기술은 지연 시간에 민감한 워크로드를 효율적으로 실행하기 위해 Google 검색, Google Ads, Google 지도, YouTube 서비스에 사용되는 것과 동일합니다.

동적 리소스 관리 작동 방식

가상 CPU(vCPU)는 호스트의 다른 스레드와 같이 요청 시 실행되도록 예약된 스레드로 구현됩니다. vCPU가 작업을 수행해야 하는 경우 다시 절전 모드로 전환될 때까지 실행할 사용 가능한 물리적 CPU에 작업이 할당됩니다. 마찬가지로 가상 RAM은 게스트 물리적 페이지에 처음 액세스할 때 입력되는 페이지 테이블을 통해 물리적 호스트 페이지에 매핑됩니다. 이 매핑은 VM이 게스트 물리적 페이지가 더 이상 필요하지 않음을 표시할 때까지 고정된 상태로 유지됩니다.

동적 리소스 관리는 리소스 수요를 기반으로 서버에 VM을 예약하고 대기 시간을 최소화하도록 물리적 CPU에 대해 vCPU를 예약하여 Compute Engine이 사용 가능한 물리적 CPU를 더 효과적으로 활용할 수 있게 해줍니다. 대부분의 경우 이를 원활하게 수행할 수 있습니다. 따라서 Google Cloud가 더 적은 서버에서 더 많은 VM을 실행할 수 있으므로, Compute Engine이 다른 VM 유형보다 상당히 낮은 가격으로 E2 VM을 제공할 수 있습니다.

동적 리소스 관리의 구성요소

Compute Engine은 다음 기술을 사용해서 동적 리소스 관리를 구현합니다.

더 크고 더 효과적인 물리적 서버

코어 수 및 RAM 밀도가 꾸준히 증가하여 이제는 호스트 서버가 개별 E2 VM보다 많은 리소스를 보유하고 있습니다. Google은 지속적으로 새로운 하드웨어를 벤치마킹하면서 비용 효율적이고 다양한 클라우드 워크로드 및 서비스에 적합한 플랫폼을 찾고 있습니다. 하드웨어 업그레이드를 사용할 수 있으면 이러한 새 리소스를 자동으로 활용할 수 있도록 Compute Engine이 E2 VM을 보다 새롭고 빠른 하드웨어로 라이브 마이그레이션합니다.

지능적인 VM 배치

Google 클러스터 관리 시스템은 물리적 서버에서 실행되는 VM의 CPU, RAM, 메모리 대역폭, 기타 리소스 수요를 관측합니다. 이러한 정보를 사용해서 해당 서버에 새로 추가된 VM의 성능을 예측합니다. 그런 후 수천 개의 서버를 검색하여 VM을 추가할 최상의 위치를 찾습니다. 이러한 관측을 통해 새 VM이 배치될 때 인접한 VM과 호환되고 이러한 인스턴스와 간섭을 일으키지 않도록 할 수 있습니다.

성능 인식 라이브 마이그레이션

호스트에 VM이 배치된 후 Compute Engine은 VM 성능 및 대기 시간을 지속적으로 모니터링합니다. VM 리소스 수요가 증가하면 Compute Engine이 라이브 마이그레이션을 사용하여 E2 로드를 데이터 센터의 다른 호스트로 투명하게 전환할 수 있습니다. 라이브 마이그레이션 정책은 VM에서 대기 시간이 발생하기 전 Compute Engine이 로드를 전환할 수 있는 시간을 제공하는 예측적인 접근 방식에 따라 결정됩니다.

하이퍼바이저 CPU 스케줄러

하이퍼바이저 CPU 스케줄러는 E2 가상 CPU 및 메모리를 필요에 따라 호스트 서버의 물리적 CPU 및 메모리에 매핑합니다. 이 동적 관리는 물리적 리소스를 더 잘 활용하여 E2 VM의 비용 효율성을 높입니다. 리소스를 효율적으로 활용하면 Compute Engine이 더 적은 서버에서 더 많은 VM을 실행하여, Google Cloud가 다른 VM 유형보다 상당히 낮은 비용으로 E2 VM을 제공할 수 있습니다.

virtio 메모리 벌룬 기기

메모리 벌룬은 게스트의 예약된 메모리 크기를 동적으로 조정하기 위한 호스트와 게스트 사이의 인터페이스 메커니즘입니다. virtio 메모리 벌룬 기기는 메모리 벌루닝 구현을 위해 사용됩니다. virtio 메모리 벌룬 기기를 통해 호스트는 게스트에게 특정 양의 사용 가능한 메모리 페이지를 만들고(메모리 벌룬 팽창이라고도 함) 호스트가 다른 VM에 사용 가능한 메모리를 사용할 수 있도록 메모리를 회수하도록 명시적으로 요청할 수 있습니다. 마찬가지로 virtio 메모리 벌룬 기기는 메모리 벌룬을 축소하여 메모리 페이지를 다시 게스트로 반환할 수 있습니다.

Virtio 메모리 기기

공개 이미지 기반의 Compute Engine E2 VM 인스턴스에는 게스트 운영체제의 메모리 사용을 모니터링하는 virtio 메모리 벌룬 기기가 있습니다. 게스트 운영체제는 사용 가능한 메모리를 호스트 시스템에 알립니다. 호스트는 사용되지 않는 메모리를 다른 프로세스에 수요에 따라 다시 할당하여 메모리를 더 효과적으로 사용합니다. Compute Engine은 이 데이터를 수집하고 사용하여 더 정확한 적정 크기를 권장합니다.

드라이버 설치 확인

이미지에 virtio 메모리 벌룬 기기 드라이버가 설치 및 로드되었는지 확인하려면 다음 명령어를 실행하세요.

Linux

대부분의 Linux 배포판에는 virtio 메모리 벌룬 기기 드라이버가 포함되어 있습니다. 이미지에 드라이버가 설치 및 로드되었는지 확인하려면 다음을 실행하세요.

sudo modinfo virtio_balloon > /dev/null && echo Balloon driver is \
installed || echo Balloon driver is not installed; sudo lsmod | grep \
virtio_balloon > /dev/null && echo Balloon driver is loaded || echo \
Balloon driver is not loaded

5.2 이전의 Linux 커널에서는 벌룬 기기가 있는 경우 Linux 메모리 시스템이 대용량 할당을 잘못 차단할 수 있습니다. 실제 작업에 문제가 되는 경우는 거의 없지만 가상 메모리 overcommit_memory 설정을 1로 변경하여 문제 발생을 차단하는 것이 좋습니다. 이 변경은 2021년 2월 9일 이후에 게시된 모든 Google 제공 이미지에 기본적으로 적용되어 있습니다.

설정을 수정하려면 다음 권장사항에 따라 값을 0에서 1로 변경합니다.

sudo /sbin/sysctl -w vm.overcommit_memory=1

재부팅 시 이러한 변경사항을 유지하려면 /etc/sysctl.conf 파일에 다음을 추가합니다.

vm.overcommit_memory=1

Windows

Compute Engine Windows 이미지에는 virtio 벌룬 기기가 포함됩니다. 그러나 커스텀 Windows 이미지에는 포함되지 않습니다. Windows 이미지에 드라이버가 설치되어 있는지 확인하려면 다음을 실행하세요.

googet verify google-compute-engine-driver-balloon

virtio 메모리 벌룬 기기 중지

virtio 메모리 벌룬 기기를 사용하면 Google Cloud가 더 낮은 비용으로 E2 VM을 제공할 수 있도록 Compute Engine이 메모리 리소스를 더 효과적으로 사용할 수 있습니다. 기기 드라이버를 사용 중지하여 virtio 메모리 벌룬 기기를 해제할 수 있습니다. virtio 메모리 벌룬 기기를 중지한 후에도 적정 크기 권장사항을 계속 받지만 정확성은 낮아질 수 있습니다.

Linux

Linux에서 기기를 사용 중지하려면 다음 명령어를 실행하세요.

sudo rmmod virtio_balloon

이 명령어를 VM의 시작 스크립트에 추가하여 VM이 부팅될 때 자동으로 기기를 사용 중지할 수 있습니다.

Windows

Windows에서 기기를 사용 중지하려면 다음 명령어를 실행하세요.

googet -noconfirm remove google-compute-engine-driver-balloon

이 명령어를 VM의 시작 스크립트에 넣어 VM이 부팅될 때 자동으로 기기를 사용 중지할 수 있습니다.

다음 단계