단독 테넌트 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만 오버커밋할 수 있습니다.

  • n1-node-96-624 노드 유형에 기반한 노드 그룹에 프로비저닝된 n1 머신 유형 VM

  • n2-node-80-640 노드 유형에 기반한 노드 그룹에 프로비저닝된 n2 머신 유형 VM

오버커밋 수준 제한

각 단독 테넌트 노드의 최소 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 오버커밋 수준 설정

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

Console

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)을 지정합니다.

API

다음 예시에서는 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 사용률을 확인할 수 있습니다.

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

    단독 테넌트 노드로 이동

  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 페이지로 이동합니다.

    Monitoring으로 이동

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

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

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

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

다음 단계