스팟 배치 점수 계산하기

스팟 배치 점수 계산하기 (Calculate the Spot placement score)

대상 용량과 컴퓨팅 요구사항을 기반으로 스팟 배치 점수(Spot placement score)를 계산할 수 있어요. 자세한 내용은 "How Spot placement score works"를 참고하세요.

출처: 문서

본문

필요한 권한을 확보하세요. "Required permissions for Spot placement score"를 참고하세요. 자동화된 솔루션을 찾고 있다면 수동 단계 대신, 점수를 자동으로 캡처해 Amazon CloudWatch에 저장하는 Spot placement score tracker 대시보드를 만들 수 있어요.

Local Zones: Amazon EC2 콘솔에서 Local Zones을 포함하려면 계정에 Local Zone이 하나 이상 활성화되어 있어야 해요.

인스턴스 속성으로 계산하기 (Calculate using instance attributes)

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Spot Requests를 선택해요.
  3. Request Spot Instances 옆의 아래쪽 화살표를 선택하고 Calculate Spot Placement Score를 선택해요.
  4. Enter requirements를 선택해요.
  5. Target capacity에 원하는 용량을 인스턴스 수, vCPU 수, 또는 메모리(MiB) 양으로 입력해요.
  6. Instance type requirements에서 컴퓨팅 요구사항을 지정하고 Amazon EC2가 그에 맞는 최적의 인스턴스 유형을 식별하게 하려면 Specify instance attributes that match your compute requirements를 선택해요.
  7. vCPUs에 원하는 최소·최대 vCPU 수를 입력해요. 제한 없음을 지정하려면 No minimum, No maximum 또는 둘 다 선택해요.
  8. **Memory (GiB)**에 원하는 최소·최대 메모리 양을 입력해요. 제한 없음도 마찬가지로 지정할 수 있어요.
  9. CPU architecture에서 필요한 인스턴스 아키텍처를 선택해요.
  10. (선택) Additional instance attributes에서 컴퓨팅 요구사항을 더 자세히 표현하는 하나 이상의 속성을 지정할 수 있어요. 각 추가 속성은 요청에 제약을 더해요. 생략하면 기본값이 사용돼요.
  11. (선택) 지정한 속성의 인스턴스 유형을 보려면 Preview matching instance types를 펼쳐요. 배치 평가에서 제외할 인스턴스 유형은 선택 후 Exclude selected instance types를 선택해요.
  12. Load placement scores를 선택하고 결과를 검토해요.
  13. (선택) 특정 리전의 점수를 표시하려면 Regions to evaluate에서 평가할 리전을 선택하고 Calculate placement scores를 선택해요.
  14. (선택) Score options 아래 Include Local Zones를 선택해요.
  15. (선택) 표시된 리전의 가용 영역별 점수를 보려면 Provide placement scores per Availability Zone 체크박스를 선택해요. 모든 스팟 용량을 단일 가용 영역에 시작하려는 경우 유용해요.
  16. (선택) 요구사항을 편집해 새 점수를 얻으려면 Edit → 조정 → Calculate placement scores 순으로 진행해요.

인스턴스 유형으로 계산하기 (Calculate using instance types)

콘솔에서 Spot Requests를 열고 Calculate Spot Placement Score → Enter requirements를 선택해요. Target capacity를 지정하고, Instance type requirements에서 Manually select instance types를 선택한 뒤 Select instance types로 사용할 인스턴스 유형을 고르고 Select를 선택해요. 필터 표시줄로 인스턴스 유형을 빠르게 찾을 수 있어요. Load placement scores로 결과를 검토하고, 필요에 따라 리전·Local Zones·가용 영역 옵션(위 절차와 동일)을 지정한 뒤 Edit로 조정하여 점수를 다시 계산할 수 있어요.

AWS CLI로 계산하기 (Calculate using the AWS CLI)

구성에 지정할 수 있는 모든 파라미터를 생성하려면 get-spot-placement-scores 명령과 --generate-cli-skeleton 파라미터를 사용해요.

aws ec2 get-spot-placement-scores \
    --region us-east-1 \
    --generate-cli-skeleton

다음은 예시 출력이에요.

{
    "InstanceTypes": [
        ""
    ],
    "TargetCapacity": 0,
    "TargetCapacityUnitType": "vcpu",
    "SingleAvailabilityZone": true,
    "RegionNames": [
        ""
    ],
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": [
            "x86_64_mac"
        ],
        "VirtualizationTypes": [
            "hvm"
        ],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 0,
                "Max": 0
            },
            "MemoryMiB": {
                "Min": 0,
                "Max": 0
            },
            "CpuManufacturers": [
                "amd"
            ],
            "MemoryGiBPerVCpu": {
                "Min": 0.0,
                "Max": 0.0
            },
            "ExcludedInstanceTypes": [
                ""
            ],
            "InstanceGenerations": [
                "previous"
            ],
            "SpotMaxPricePercentageOverLowestPrice": 0,
            "OnDemandMaxPricePercentageOverLowestPrice": 0,
            "BareMetal": "excluded",
            "BurstablePerformance": "excluded",
            "RequireHibernateSupport": true,
            "NetworkInterfaceCount": {
                "Min": 0,
                "Max": 0
            },
            "LocalStorage": "included",
            "LocalStorageTypes": [
                "hdd"
            ],
            "TotalLocalStorageGB": {
                "Min": 0.0,
                "Max": 0.0
            },
            "BaselineEbsBandwidthMbps": {
                "Min": 0,
                "Max": 0
            },
            "AcceleratorTypes": [
                "fpga"
            ],
            "AcceleratorCount": {
                "Min": 0,
                "Max": 0
            },
            "AcceleratorManufacturers": [
                "amd"
            ],
            "AcceleratorNames": [
                "vu9p"
            ],
            "AcceleratorTotalMemoryMiB": {
                "Min": 0,
                "Max": 0
            }
        }
    },
    "DryRun": true,
    "MaxResults": 0,
    "NextToken": "",
    "IncludeLocalZones": true
}

이전 단계 출력을 사용해 JSON 구성 파일을 만들고 다음과 같이 구성해요.

  • TargetCapacity – 원하는 스팟 용량을 인스턴스 수, vCPU 수, 또는 메모리(MiB) 양으로 입력.
  • TargetCapacityUnitType – 대상 용량의 단위. 생략하면 기본값 units(인스턴스 수를 의미)로 지정됨. 유효한 값: units | vcpu | memory-mib.
  • SingleAvailabilityZone – 점수가 매겨진 가용 영역 목록을 반환받으려면 true를 지정. 생략하면 기본값 false이고, 점수가 매겨진 리전 목록을 반환. 모든 스팟 용량을 단일 가용 영역에 시작하려면 가용 영역 목록이 유용.
  • (선택) IncludeLocalZones – Local Zones을 포함하려면 true. 리전 점수의 경우 Local Zone 용량이 상위 리전에 집계되고, 영역 점수의 경우 개별 Local Zone 점수를 포함할 수 있음. 생략하거나 false면 무시됨.
  • (선택) RegionNames – 필터로 사용할 리전 지정. 리전 코드(예: us-east-1)를 지정해야 함. 리전 필터를 쓰면 지정한 리전만 반환되고, SingleAvailabilityZone이 true면 지정한 리전의 가용 영역만 반환됨.

구성에는 InstanceTypes 또는 InstanceRequirements 중 하나를 포함할 수 있지만 둘 다는 안 돼요.

  • 인스턴스 유형 목록을 지정하려면 InstanceTypes 파라미터에 유형을 지정해요. 서로 다른 인스턴스 유형을 3개 이상 지정하세요. 하나나 둘만 지정하면 낮은 점수가 반환돼요.
  • Amazon EC2가 속성에 맞는 인스턴스 유형을 식별하게 하려면 InstanceRequirements 구조의 속성을 지정해요. VCpuCount, MemoryMiB, CpuManufacturers 값은 반드시 제공해야 하고, 다른 속성은 생략 가능하며 기본값이 사용돼요.

JSON 파일에 지정한 요구사항의 점수를 얻으려면 get-spot-placement-scores 명령을 사용하고 --cli-input-json으로 JSON 파일 경로를 지정해요.

aws ec2 get-spot-placement-scores \
    --region us-east-1 \
    --cli-input-json file://file_name.json

SingleAvailabilityZone이 false이거나 생략된 경우의 예시 출력 – 점수가 매겨진 리전 목록.

"SpotPlacementScores": [
    {
        "Region": "us-east-1",
        "Score": 7
    },
    {
        "Region": "us-west-1",
        "Score": 5
    },  
   ...

SingleAvailabilityZone이 true인 경우의 예시 출력 – 점수가 매겨진 가용 영역 목록(그리고 IncludeLocalZones가 true면 Local Zones).

"SpotPlacementScores": [
    {
        "Region": "us-east-1",
        "AvailabilityZoneId": "use1-az1",
        "Score": 8
    },
    {
        "Region": "us-east-1",
        "AvailabilityZoneId": "usw2-az3",
        "Score": 6
    },
   ...

예시 구성 (Example configurations)

인스턴스 유형과 대상 용량 지정:

{
    "InstanceTypes": [
        "m5.4xlarge",
        "r5.2xlarge",
        "m4.4xlarge"
    ], 
    "TargetCapacity": 500
}

인스턴스 유형과 메모리 단위 대상 용량 지정:

{
    "InstanceTypes": [
        "m5.4xlarge",
        "r5.2xlarge",
        "m4.4xlarge"
    ], 
    "TargetCapacity": 500000,
    "TargetCapacityUnitType": "memory-mib"
}

속성 기반 인스턴스 유형 선택용 속성 지정:

{
    "TargetCapacity": 5000,
    "TargetCapacityUnitType": "vcpu",
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": ["arm64"],
        "VirtualizationTypes": ["hvm"],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 1,
                "Max": 12
            },
            "MemoryMiB": {
                "Min": 512
            }
        }
    }
}

위 예시에서 지정된 필수 인스턴스 속성은 다음과 같아요.

  • ArchitectureTypes – 인스턴스 유형의 아키텍처가 arm64여야 함.
  • VirtualizationTypes – 인스턴스 유형의 가상화 유형이 hvm이어야 함.
  • VCpuCount – 인스턴스 유형이 최소 1, 최대 12 vCPU를 가져야 함.
  • MemoryMiB – 인스턴스 유형이 최소 512 MiB 메모리를 가져야 함. Max를 생략하면 상한이 없다는 뜻.

TargetCapacityUnitType 파라미터는 대상 용량의 단위를 지정해요. 위 예시에서 대상 용량은 5000이고 단위 유형은 vcpu이므로, 시작할 스팟 인스턴스 수가 합계 5000 vCPU를 제공해야 함을 의미해요.

속성 기반 선택 + 점수가 매겨진 가용 영역 목록 반환:

{
    "TargetCapacity": 1000,
    "TargetCapacityUnitType": "vcpu",
    "SingleAvailabilityZone": true,
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": ["arm64"],
        "VirtualizationTypes": ["hvm"],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 1,
                "Max": 12
            },
            "MemoryMiB": {
                "Min": 512
            }
        }
    }
}

더 알아보기