동시 멀티 스레딩(SMT) 구성


이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터에서 동시 멀티 스레딩을 구성하는 방법을 설명합니다.

개요

GKE 노드는 GKE에서 사용자 대신 만드는 Compute Engine 가상 머신(VM) 인스턴스입니다. 이러한 VM에서는 기본적으로 동시 멀티 스레딩(SMT)이 사용 설정되어 있습니다. SMT는 단일 물리적 CPU 코어에서 독립 스레드를 여러 개 실행하는 기능입니다. SMT를 사용 설정하면 단일 물리적 코어에서 가상 CPU(vCPU) 두 개를 독립적인 개별 스레드로 실행할 수 있습니다. 예를 들어 n2-standard-32 GKE 노드는 실제로 물리적 CPU 코어 16개에서 vCPU 32개를 실행합니다.

GKE 노드에 SMT 구성이 도입됨에 따라 이제 유효한 vCPU 수가 물리적 코어 수와 동일하도록 SMT를 구성할 수 있습니다. 즉, GKE 노드에서 vCPU마다 전체 물리적 코어를 사용할 수 있습니다.

이점

GKE에 SMT를 구성하면 다음과 같은 이점이 있습니다.

성능 향상

일부 고성능 컴퓨팅(HPC) 워크로드에서는 SMT를 중지하면 성능이 향상될 수 있습니다. 일반적으로 여러 일반적인 컴퓨팅 작업이나 많은 I/O가 필요한 작업의 경우 SMT에서 애플리케이션 처리량을 크게 늘릴 수 있습니다. 반면에 두 가상 코어 모두가 컴퓨팅 바운드인 컴퓨팅 바운드 작업의 경우 SMT는 전반적인 애플리케이션 성능을 저하시키고 작업에 비확정 분산을 추가할 수 있습니다. 따라서 SMT를 중지하면 일부 HPC 애플리케이션에서 더 우수하고 예측 가능한 성능을 얻을 수 있습니다.

라이선스 비용 절감

일부 소프트웨어 라이선스 계약에는 사용되는 vCPU 수에 연결된 청구 모델이 있습니다. SMT를 중지하면 각 코어의 vCPU 수가 절반으로 줄어들어 라이선스 비용이 줄어들 수 있습니다. 자세한 내용은 라이선스 계약을 참조하세요.

SMT가 구성될 때 Google Cloud 요금이 청구되는 방식은 가격 책정 섹션을 참조하세요.

제한사항

  • 머신 유형: vCPU가 2개 미만인 머신 유형(예: n1-standard-1) 또는 Tau T2D 머신 유형에서는 SMT를 구성할 수 없습니다.
  • 노드 자동 프로비저닝: 노드 자동 프로비저닝이 사용 설정된 클러스터에는 SMT를 구성할 수 없습니다.
  • 클러스터 자동 확장 처리: GKE 버전 1.21 이상이 실행되는 클러스터의 클러스터 자동 확장 처리에서만 SMT 구성으로 노드 0개부터 확장할 수 있습니다.
  • GKE Sandbox: --threads-per-core 플래그를 사용하여 GKE Standard 클러스터 실행 버전 1.24.2-gke.300 이상의 GKE Sandbox 노드에서 SMT 설정을 구성할 수 있으며, 독립형 DaemonSet을 사용하여 이전 버전에서 SMT 설정을 구성할 수 있습니다. 자세한 내용은 GKE Sandbox를 참조하세요. 멀티스레딩은 버전 1.24.2-gke.300 이전의 GKE Sandbox에서 기본적으로 사용 중지되므로 threads-per-core를 사용하여 SMT를 구성할 수 없습니다. GKE Sandbox를 사용하고 SMT를 사용 설정하려면 SMT가 사용 중지될 수 있음을 참조하세요.
  • 클러스터 모드: GKE Autopilot 클러스터에 SMT를 구성할 수 없습니다.

가격 책정

GKE용 SMT 요금은 기본 SMT용 Compute Engine 가격 책정에 따라 청구됩니다. 각 코어에서 실행되는 스레드 수가 아닌 VM의 머신 유형에 따라 정의된 vCPU 수에 대한 요금이 청구됩니다. SMT를 구성하더라도 VM 머신 유형으로 정의된 기본 vCPU 수에 대한 요금이 계속 청구됩니다. VM 요금 청구 방법에 대한 자세한 내용은 VM 인스턴스 가격 책정을 참조하세요.

예를 들어 n2-standard-8 머신 유형을 사용하여 만든 GKE 노드는 기본적으로 SMT가 사용 설정된 상태에서 실행되며 vCPU를 최대 8개(물리적 CPU 코어 4개 각각에 vCPU 2개)까지 실행할 수 있습니다. 코어당 스레드 하나만 사용하도록 SMT를 구성하는 경우(사실상 vCPU 4개) vCPU 8개에 대한 요금이 계속 청구됩니다.

SMT 구성

코어당 스레드 수를 지정하여 새 클러스터나 노드 풀에 SMT를 구성할 수 있습니다.

다음 표에서는 코어당 가능한 스레드 값과 노드의 해당 SMT 동작을 보여줍니다.

코어당 스레드 SMT 동작
null(지정되지 않음) Compute Engine VM 기본값
0 잘못됨
1 SMT 중지
2 SMT 사용
> 2 잘못됨

새 클러스터에 SMT 구성

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 새 클러스터에서 SMT를 구성할 수 있습니다.

gcloud

SMT를 구성하려면 다음 명령어를 실행합니다.

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터 이름입니다.
  • MACHINE_TYPE: GKE 노드에 사용할 머신 유형입니다. vCPU가 2개 이상 있는 머신 유형이어야 합니다.
  • THREADS_PER_CORE: 물리적 코어당 스레드 수입니다. 이전 표에는 지정할 수 있는 값이 나와 있습니다.

전체 옵션 목록은 gcloud container clusters create 문서를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 클러스터 만들기 대화상자의 GKE Standard 옆에 있는 구성을 클릭합니다.

  4. 탐색 메뉴의 노드 풀 섹션에서 노드 풀 이름을 클릭한 후 노드를 클릭합니다.

  5. 머신 구성 섹션에서 지원되는 머신 유형(예: e2-standard-2)을 선택합니다.

  6. CPU 플랫폼 및 GPU를 클릭합니다.

  7. vCPU 대 코어 비율 드롭다운 메뉴에서 다음 중 하나를 선택합니다.

    • 코어당 vCPU 1개: SMT를 중지합니다.
    • 코어당 vCPU 2개: SMT를 사용 설정합니다.
  8. 필요에 따라 클러스터와 노드 풀을 구성한 후 만들기를 클릭합니다.

새 노드 풀에 SMT 구성

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 새 노드 풀에 SMT를 구성할 수 있습니다.

gcloud

SMT를 구성하려면 다음 명령어를 실행합니다.

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

다음을 바꿉니다.

  • POOL_NAME: 새 노드 풀의 이름입니다.
  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • MACHINE_TYPE: GKE 노드에 사용할 머신 유형입니다. vCPU가 2개 이상 있는 머신 유형이어야 합니다.
  • THREADS_PER_CORE: 물리적 코어당 스레드 수입니다. 이전 표에는 지정할 수 있는 값이 나와 있습니다.

전체 옵션 목록은 gcloud container clusters create 문서를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 노드 풀 추가를 클릭합니다.

  4. 탐색 메뉴에서 노드를 클릭합니다.

  5. 머신 구성 섹션에서 머신 계열과 SMT를 지원하는 머신 유형(예: n2-standard-2)을 선택합니다.

  6. CPU 플랫폼 및 GPU를 클릭합니다.

  7. vCPU 대 코어 비율 드롭다운 메뉴에서 다음 옵션 중 하나를 선택합니다.

    • 코어당 vCPU 1개: SMT를 중지합니다.
    • 코어당 vCPU 2개: SMT를 사용 설정합니다.
  8. 필요에 따라 노드 풀을 구성한 후 만들기를 클릭합니다.

SMT 구성 확인

Linux

Linux 노드에서 SMT 구성을 확인하려면 다음 단계를 수행합니다.

  1. SSH를 통해 노드에 연결합니다.

    gcloud compute ssh NODE_NAME
    

    NODE_NAME을 노드 이름으로 바꿉니다.

  2. vCPU 수를 확인합니다.

    cat /proc/cpuinfo | grep processor | wc -l
    

    출력은 다음과 비슷합니다.

    16
    

    코어당 스레드 수를 1로 설정하면 출력에 Compute Engine VM 기본 vCPU 수의 절반이 표시됩니다. 예를 들어 SMT가 중지된 n2-standard-32의 출력은 기본값 32가 아닌 16입니다.

Windows

Windows 노드에서 SMT 구성을 확인하려면 다음 단계를 수행합니다.

  1. RDP에 대한 사용자 이름과 비밀번호를 노드에 설정합니다.

    gcloud compute reset-windows-password NODE_NAME
    

    NODE_NAME을 노드 이름으로 바꿉니다.

  2. VM의 EXTERNAL_IP:3389에 대한 연결을 설정합니다.

  3. 다음 PowerShell 명령어를 실행합니다.

    Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
    

    코어당 스레드 수를 1로 설정하면 NumberOfCores 값은 다음 출력 예시와 같이 NumberOfLogicalProcessors 값과 동일해야 합니다.

    Output (example n1-standard-2 with SMT off)
    
    NumberOfCores NumberOfLogicalProcessors
    ------------- -------------------------
                1                         1
    

다음 단계