단독 테넌트 VM의 CPU 오버커밋


단독 테넌트 노드에서 CPU 오버커밋을 사용하면 여유 CPU 주기를 서로 공유하는 인스턴스를 예약할 수 있습니다. 이렇게 하면 단독 테넌트 노드 리소스를 오버프로비저닝하고 단독 테넌트 노드에서 평소보다 더 많은 VM CPU를 예약할 수 있습니다. CPU 오버커밋은 사용률이 낮지만 상대적으로 상관 관계가 적은 버스트가 발생하는 워크로드에 특히 유용합니다.

CPU 오버커밋은 단독 테넌트 노드 비용을 더 많은 VM에 분산하여 VM당 비용을 줄이는 데 도움이 됩니다. 또한 소켓당 또는 코어당 라이선스를 사용하면 VM당 라이선스 비용도 줄일 수 있습니다.

오버커밋된 CPU가 있는 VM은 다른 방식으로는 사용할 수 없는 CPU 리소스를 다음과 같은 방식으로 활용할 수 있습니다.

  • 단독 테넌트 노드가 가득 치지 않은 경우 오버커밋된 VM은 할당되지 않은 코어를 활용할 수 있습니다.

  • 단독 테넌트 노드의 다른 VM이 CPU 리소스를 모두 사용하지 않는 경우(예: CPU가 유휴 상태일 때) 오버커밋된 VM이 해당 CPU 리소스를 사용할 수 있습니다.

오버커밋 수준

VM을 만들 때 또는 VM을 중지한 후 VM에 할당되는 최소 CPU 수 값을 지정할 수 있습니다. 오버커밋 수준은 VM에서 사용할 수 있도록 보장되는 기본 CPU 스레드의 최소 개수를 나타냅니다. VM에 사용 가능한 기본 스레드보다 vCPU가 더 많으면 VM의 vCPU는 기본 컴퓨팅 리소스를 공유하고 성능이 저하된 상태로 실행됩니다.

VM마다 이 값을 설정할 수 있으므로 단일 단독 테넌트 노드에서 다양한 CPU 오버커밋 비율로 VM을 프로비저닝할 수 있습니다. 값이 낮을수록 상관 관계가 있는 버스트가 발생할 때 용량 요구사항이 줄어들지만 대신 성능이 저하될 수 있습니다. 최소 CPU 수에 대한 최적의 값을 결정하려면 워크로드 사용률을 파악하고 값을 반복적으로 수정해야 합니다.

이 값을 설정할 때는 다음 사항에 유의하세요.

  • 최소 CPU 수 값을 설정하지 않거나 VM 머신 유형의 CPU 수와 동일하게 설정하는 경우 VM의 허용 가능한 오버커밋 비율은 1.0입니다. 오버커밋 비율이 1.0이면 이 VM에서만 모든 CPU에 액세스할 수 있으며 다른 VM에 오버커밋할 수 있는 CPU 리소스는 없습니다.

  • 최소 CPU 수가 VM의 머신 유형에서 지정된 CPU 수보다 클 수 없습니다.

  • 단독 테넌트 노드에 있는 모든 VM의 최소 CPU 수 값 합계가 단독 테넌트 노드 유형의 CPU 용량(n1-node-96-624 노드 유형의 경우 96)을 초과할 수 없습니다.

VM 머신 유형에서 지정된 CPU 수의 값은 고정 값이며 CPU를 사용할 수 있는 경우 VM이 최소 수에서 버스트할 수 있는 CPU 수를 나타냅니다. 고정 머신 유형에서 제공되는 CPU 수와 다른 CPU 수가 필요하면 커스텀 머신 유형을 사용하면 됩니다.

고려사항

VM의 CPU 오버커밋 수준을 구성하기 전에 먼저 워크로드의 중요도를 고려합니다. 개발 및 테스트 워크로드와 같은 덜 중요한 워크로드에는 더 높은 오버커밋 수준이 허용될 수 있습니다. 프로덕션 결제 시스템과 같이 더 중요한 워크로드에는 오버커밋이 그만큼 허용되지 않거나 전혀 허용되지 않을 수 있습니다.

또한 워크로드 사용률도 고려해야 합니다. 다른 오버커밋되는 VM에 활용할 수 있는 여유 사용 주기가 없으므로 CPU 사용률이 높은 워크로드는 CPU 오버커밋에 적합하지 않습니다. 또한 평균 CPU 사용률이 낮고 최대 사용률이 낮은 워크로드에는 다양한 크기의 머신 유형을 활용할 수 있습니다.

일부 VM이 사용률을 버스트해야 할 때 VM 간에 CPU 리소스를 공유할 가능성이 높아지므로 CPU 오버커밋은 최대 사용률이 높고 평균 사용률이 낮은 상관 관계가 없는 버스트 워크로드에 이점을 제공합니다. 호스트의 모든 VM이 한 번에 버스트하면 호스트에서 개발자 VM에 사용할 리소스가 부족해집니다.

제한사항

워크로드 제한사항

CPU 오버커밋은 개발 및 테스트 워크로드, 가상 데스크톱 인프라 등 엄격한 성능 요구사항이 없는 워크로드에 가장 적합합니다.

높은 수준의 CPU 오버커밋은 성능에 민감한 워크로드에 적합하지 않을 수 있습니다.

평균 및 최고 사용률이 지속적으로 낮은 워크로드의 경우 크기 조정이 권장됩니다. 즉, CPU를 오버커밋하는 대신 해당 워크로드의 리소스 요구사항에 맞게 VM 인스턴스의 크기를 수정하는 것이 좋습니다.

인스턴스가 과도하게 오버커밋되면 다른 단독 테넌트 노드로 인스턴스를 이동합니다.

머신 유형 제한사항

다음의 CPU만 오버커밋할 수 있습니다.

오버커밋 수준 제한사항

각 단독 테넌트 노드의 최소 CPU를 최대 단독 테넌트 노드 오버커밋 비율이 2.0이 되도록 VM CPU의 절반으로만 구성할 수 있습니다.

VM 예약 제한사항

CPU 오버커밋에 대해 구성되지 않은 단독 테넌트 노드 템플릿을 기반으로 하는 단독 테넌트 노드 그룹은 CPU 오버커밋이 사용 설정된 VM의 프로비저닝을 허용하지 않습니다. 즉, CPU 오버커밋에 대해 구성되지 않은 단독 테넌트 노드 그룹에 지정된 최소 수의 CPU가 있는 VM은 예약할 수 없습니다.

할당량

CPU 할당량은 오버커밋에 사용할 수 있는 잠재적 최대 vCPU 수가 아니라 단독 테넌트 노드 유형의 vCPU 수를 기반으로 합니다.

비용

노드 템플릿에서 CPU 오버커밋이 선택된 단독 테넌트 노드에는 25%가 추가 청구됩니다. 이 요금은 단독 테넌트 노드에서 VM을 실행할 때 발생하는 10% 프리미엄에 추가됩니다. CPU 오버커밋 프리미엄은 CPU 오버커밋 수준과 단독 테넌트 노드에 예약된 VM 수에 관계없이 고정되어 있습니다.

단독 테넌트 노드에서는 약정 사용 할인을 제공합니다. 단독 테넌시 프리미엄과 CPU 오버커밋 프리미엄에는 지속 사용 할인이 제공됩니다.

단독 테넌트 노드에서 VM을 실행하는 비용을 추정하려면 가격 계산기를 참조하세요.

오버커밋을 위한 단독 테넌트 VM 구성

단독 테넌트 VM이 CPU 리소스를 오버커밋할 수 있도록 구성하려면 다음을 수행합니다.

  1. CPU 오버커밋이 사용 설정된 단독 테넌트 노드 템플릿을 만듭니다. 노드 템플릿을 만드는 동안 CPU 오버커밋을 사용 설정해야 합니다. 노드 템플릿을 만든 후에는 CPU 오버커밋을 사용 설정할 수 없습니다.

  2. CPU 오버커밋이 사용 설정된 단독 테넌트 노드 템플릿을 바탕으로 단독 테넌트 노드 그룹을 만듭니다.

  3. VM을 만들고 다음을 수행합니다.

    1. VM의 머신 유형을 선택합니다. 머신 유형의 CPU 수는 최소 CPU 수가 머신 유형에서 지정된 CPU 수보다 적을 때 VM이 최소 CPU 수에서 버스트할 수 있는 최대 CPU 수를 나타냅니다.

      단독 테넌트 노드의 CPU와 메모리 용량을 초과하지 않으면 단독 테넌트 노드의 VM마다 서로 다른 머신 유형을 선택할 수 있습니다.

    2. 단일 VM에 할당할 최소 CPU 수를 지정하거나 관리형 인스턴스 그룹을 사용하여 동일한 CPU 오버커밋 수준으로 VM을 여러 개 만듭니다.

시작하기 전에

  • 단독 테넌트 노드 템플릿을 만들고 --cpu-overcommit-type=enabled를 지정합니다.
  • CPU 오버커밋이 사용 설정된 단독 테넌트 노드 템플릿을 바탕으로 단독 테넌트 노드 그룹을 만듭니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

CPU 오버커밋 수준 설정

다음은 오버커밋에 사용할 수 있는 CPU 리소스로 단독 테넌트 VM을 만드는 절차를 설명합니다. 실행 중인 VM의 CPU 오버커밋 수준을 수정해야 하면 먼저 VM을 중지해야 합니다.

콘솔

Google Cloud Console에서 CPU 오버커밋이 사용 설정된 단독 테넌트 노드 템플릿에서 생성된 단독 테넌트 노드 그룹에 단독 테넌트 VM을 만듭니다.

  1. 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 노드 그룹을 클릭합니다.

  3. VM을 만들 단독 테넌트 노드 그룹을 클릭합니다.

  4. 인스턴스 만들기를 클릭합니다.

  5. VM의 이름, 리전, 영역을 지정합니다.

  6. 머신 구성에서 vCPU가 최소 4개 이상인 고정 또는 커스텀 머신 유형을 선택합니다.

  7. CPU 오버커밋에서 CPU 오버커밋 사용 설정을 선택합니다.

  8. 최소 vCPU 할당에서 슬라이더를 조정하거나 vCPU 수를 직접 입력하여 이 VM의 CPU 오버커밋 수준을 지정합니다.

  9. 만들기를 클릭하여 오버커밋에 사용할 수 있는 CPU 리소스가 있는 VM 인스턴스를 만듭니다.

gcloud

다음 예시에서는 gcloud compute instances create 명령어를 사용하여 오버커밋에 사용할 수 있는 CPU 리소스가 있는 고정 머신 유형의 단독 테넌트 VM을 만드는 방법을 보여줍니다.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --min-node-cpu=MIN_VCPUS \
    --node-group=GROUP_NAME

다음을 바꿉니다.

  • VM_NAME: CPU를 오버커밋할 VM의 이름입니다.

  • MACHINE_TYPE: 단독 테넌트 VM을 프로비저닝할 머신 유형입니다. 머신 유형에서 지정된 CPU 수는 VM이 MIN_VCPUS에서 버스트할 수 있는 최대 CPU 수입니다.

  • MIN_VCPUS: 이 VM에서 사용할 수 있는 최소 vCPU 수입니다.

  • GROUP_NAME: VM을 프로비저닝할 단독 테넌트 노드 그룹의 이름입니다.

커스텀 머신 유형에서 오버커밋 수준 설정

커스텀 머신 유형으로 오버커밋에 사용할 수 있는 CPU 리소스가 있는 단독 테넌트 VM을 만들려면 --machine-type 플래그를 생략하고 대신 --custom-cpu 플래그와 --custom-memory 플래그를 사용하여 커스텀 머신의 CPU 수와 메모리 양(GB)을 지정합니다.

REST

다음 예시에서는 instances.insert 명령어를 사용하여 오버커밋에 사용할 수 있는 CPU 리소스가 있는 고정 머신 유형의 단독 테넌트 VM을 만드는 방법을 보여줍니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  ...
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.

  • ZONE: 이 요청의 영역입니다.

  • MACHINE_TYPE_ZONE: 머신 유형을 호스팅하는 영역입니다.

  • MACHINE_TYPE: 단독 테넌트 VM을 프로비저닝할 머신 유형입니다. 머신 유형에서 지정된 CPU 수는 VM이 MIN_VCPUS에서 버스트할 수 있는 최대 CPU 수입니다.

  • VM_NAME: CPU를 오버커밋할 단독 테넌트 VM의 이름입니다.

  • MIN_VCPUS: 이 VM에서 사용할 수 있는 최소 vCPU 수입니다.

  • GROUP_NAME: VM을 프로비저닝할 단독 테넌트 노드 그룹의 이름입니다.

커스텀 머신 유형에서 오버커밋 수준 설정

커스텀 머신 유형으로 오버커밋에 사용할 수 있는 CPU 리소스가 있는 단독 테넌트 VM을 만들려면 machineType 필드 값을 zones/zone/machineTypes/custom-CPUS-MEMORY로 바꿉니다. 이때 CPUS를 커스텀 머신 유형의 CPU 수로 바꾸고 MEMORY를 메모리 양(MB)으로 바꿉니다.

CPU 오버커밋 수준 업데이트

다음 절차는 단독 테넌트 VM의 CPU 오버커밋 수준을 업데이트하는 방법을 보여줍니다.

gcloud

  1. 실행 중인 VM의 CPU 오버커밋 수준을 수정하려면 먼저 VM을 중지해야 합니다. VM을 중지하려면 다음과 같이 gcloud compute instances stop 명령어를 사용합니다.

    gcloud compute instances stop VM_NAME
    

    VM_NAME을 중지할 인스턴스의 이름으로 바꿉니다.

  2. 단독 테넌트 VM의 CPU 오버커밋 수준을 업데이트하려면 다음과 같이 gcloud compute instances set-scheduling 명령어를 사용합니다.

    gcloud compute instances set-scheduling VM_NAME \
      --min-node-cpu=MIN_VCPUS
    

    다음을 바꿉니다.

    • VM_NAME: CPU 오버커밋 수준을 수정할 단독 테넌트 VM의 이름입니다.

    • MIN_VCPUS: 이 VM에서 사용할 수 있는 최소 vCPU 수입니다.

REST

  1. 실행 중인 VM의 CPU 오버커밋 수준을 수정하려면 먼저 VM을 중지해야 합니다. VM을 중지하려면 다음과 같이 instances.stop 메서드를 사용하여 POST 요청을 구성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트의 ID입니다.

    • ZONE: 이 요청의 영역입니다.

    • VM_NAME: CPU 오버커밋 수준을 수정할 단독 테넌트 VM의 이름입니다.

  2. 단독 테넌트 VM의 CPU 오버커밋 수준을 업데이트하려면 다음과 같이 instances.setScheduling 메서드를 사용합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":MIN_VCPUS
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트의 ID입니다.

    • ZONE: 이 요청의 영역입니다.

    • VM_NAME: CPU 오버커밋 수준을 수정할 단독 테넌트 VM의 이름입니다.

    • MIN_VCPUS: 이 VM에서 사용할 수 있는 최소 vCPU 수입니다.

단독 테넌트 VM의 CPU 오버커밋 중지

다음 절차는 단독 테넌트 VM의 CPU 오버커밋을 중지하는 방법을 보여줍니다.

gcloud

다음 예시에서는 gcloud compute instances set-scheduling 명령어를 사용하여 단독 테넌트 VM의 CPU 오버커밋을 중지하는 방법을 보여줍니다.

gcloud compute instances set-scheduling VM_NAME \
  --clear-min-node-cpu

다음을 바꿉니다.

  • VM_NAME: CPU 오버커밋을 중지할 단독 테넌트 VM의 이름입니다.

REST

다음 예시에서는 instances.setScheduling 명령어를 사용하여 단독 테넌트 VM의 CPU 오버커밋을 중지하는 방법을 보여줍니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
  "minNodeCpus":null
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.

  • ZONE: 이 요청의 영역입니다.

  • VM_NAME: CPU 오버커밋을 중지할 단독 테넌트 VM의 이름입니다.

CPU 사용량 보기

단독 테넌트 노드 그룹에서 단독 테넌트 VM의 CPU 사용량을 확인하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 노드 그룹을 클릭합니다.

  3. CPU를 오버커밋하는 VM이 있는 단독 테넌트 노드가 포함된 단독 테넌트 노드 그룹을 클릭합니다.

  4. CPU를 오버커밋하는 VM이 있는 단독 테넌트 노드를 클릭합니다.

  5. 단독 테넌트 노드 이름 아래에서 CPU 사용률, CPU 오버커밋 유형, 최소 CPU 사용률을 확인합니다.

    • CPU 사용률은 이 단독 테넌트 노드의 모든 VM에 대한 최대 CPU 수 합계를 단독 테넌트 노드 유형에서 지정된 CPU 수로 나눈 값입니다.

      오버커밋할 수 있는 노드의 CPU 수는 분자에서 분모를 뺀 값이며, 오버커밋 수준은 분자 대 분모의 몫입니다.

    • 최소 CPU 사용률은 단독 테넌트 노드의 모든 VM에 할당된 최소 CPU 수 합계를 노드 유형에서 지정된 CPU 수로 나눈 값입니다.

CPU 오버커밋 수준 최적화

CPU 오버커밋 수준 조정을 최적화하는 데 도움이 되도록 Compute Engine은 스케줄러 대기 시간 측정항목을 제공합니다. 스케줄러 대기 시간 측정항목은 VM의 모든 vCPU에 대한 집계 대기 시간을 나타내며, 이를 통해 CPU 오버커밋이 VM 성능에 미치는 영향을 확인할 수 있습니다.

워크로드 민감도는 다양하지만 일반적인 규칙은 각 vCPU의 최대 대기 시간으로 초당 20밀리초(20 ms/s)를 사용하는 것입니다. 예를 들어 VM이 8개의 vCPU로 설정된 경우 기준은 일반적으로 160 ms/s이며 허용되는 평균 스케줄러 대기 시간은 vCPU당 20 ms/s입니다. 워크로드의 성능 요구사항에 따라 허용되는 기준이 결정됩니다.

  1. Google Cloud Console에서 Monitoring 페이지로 이동합니다.

    모니터링으로 이동

  2. 측정항목 탐색기를 클릭합니다.

  3. 리소스 유형 필드에 VM 인스턴스를 입력합니다.

  4. 측정항목 필드에 스케줄러 대기 시간을 입력합니다.

  5. 필요한 경우 알림을 클릭하여 VM 대기 시간 기준에 대해 알림을 트리거하도록 알림을 설정합니다.

다음 단계