버스터블 인스턴스의 CPU 크레딧 모니터링하기
버스터블 인스턴스의 CPU 크레딧 모니터링하기 (Monitor CPU credits for burstable instances)
EC2는 지표를 Amazon CloudWatch로 보내요. CloudWatch 콘솔의 Amazon EC2 인스턴스별 지표에서 CPU 크레딧 지표를 보거나, AWS CLI로 각 인스턴스의 지표를 나열해 확인할 수 있어요. 자세한 내용은 '인스턴스에 사용할 수 있는 CloudWatch 지표'를 참고하세요.
목차 (Contents)
- 버스터블 성능 인스턴스의 추가 CloudWatch 지표
- CPU 크레딧 사용량 계산하기
버스터블 성능 인스턴스의 추가 CloudWatch 지표
버스터블 성능 인스턴스에는 5분마다 업데이트되는 다음 추가 CloudWatch 지표가 있어요.
CPUCreditUsage– 측정 기간 동안 소비한 CPU 크레딧 수.CPUCreditBalance– 인스턴스가 누적한 CPU 크레딧 수. CPU가 버스트하고 크레딧을 벌어들이는 것보다 빨리 소비하면 이 잔액이 줄어들어요.CPUSurplusCreditBalance–CPUCreditBalance값이 0일 때 CPU 사용률을 유지하기 위해 소비한 잉여 CPU 크레딧 수.CPUSurplusCreditsCharged– 24시간 동안 벌 수 있는 최대 CPU 크레딧 수를 초과해 추가 요금이 부과되는 잉여 CPU 크레딧 수.
마지막 두 지표는 unlimited로 구성된 인스턴스에만 적용돼요.
다음 표는 버스터블 성능 인스턴스의 CloudWatch 지표를 설명해요. 자세한 내용은 '인스턴스에 사용할 수 있는 CloudWatch 지표'를 참고하세요.
| 지표 | 설명 |
|---|---|
CPUCreditUsage |
인스턴스가 CPU 사용률로 소비한 CPU 크레딧 수. CPU 크레딧 1개는 하나의 vCPU가 100% 사용률로 1분 실행되는 것, 또는 vCPU·사용률·시간의 동일한 조합(예: 하나의 vCPU가 50% 사용률로 2분, 또는 두 vCPU가 25% 사용률로 2분)과 같아요. CPU 크레딧 지표는 5분 주기로만 제공돼요. 5분보다 큰 주기를 지정하면 Average 통계 대신 Sum 통계를 사용하세요. 단위: Credits (vCPU-minutes) |
CPUCreditBalance |
인스턴스가 시작된 이후 누적한 획득 CPU 크레딧 수. T2 Standard의 경우 CPUCreditBalance에는 누적된 시작 크레딧(launch credits) 수도 포함돼요. 크레딧은 획득된 후 크레딧 잔액에 누적되고, 소비되면 잔액에서 제거돼요. 크레딧 잔액에는 인스턴스 크기에 따라 결정되는 최대 한도가 있고, 한도에 도달하면 새로 획득한 크레딧은 폐기돼요. T2 Standard의 경우 시작 크레딧은 한도에 포함되지 않아요. CPUCreditBalance의 크레딧은 인스턴스가 기준선 CPU 사용률을 넘어 버스트하기 위해 소비할 수 있어요. 인스턴스가 실행 중일 때 CPUCreditBalance의 크레딧은 만료되지 않아요. T4g, T3a 또는 T3 인스턴스가 중지되면 CPUCreditBalance 값이 7일간 유지된 뒤 모든 누적 크레딧이 손실돼요. T2 인스턴스가 중지되면 CPUCreditBalance 값이 유지되지 않고 모든 누적 크레딧이 손실돼요. CPU 크레딧 지표는 5분 주기로만 제공돼요. 단위: Credits (vCPU-minutes) |
CPUSurplusCreditBalance |
CPUCreditBalance 값이 0일 때 unlimited 인스턴스가 소비한 잉여 크레딧 수. CPUSurplusCreditBalance 값은 획득 CPU 크레딧으로 갚아져요. 잉여 크레딧 수가 인스턴스가 24시간 동안 벌 수 있는 최대 크레딧 수를 초과하면, 최대치를 초과한 소비 잉여 크레딧에 추가 요금이 부과돼요. 단위: Credits (vCPU-minutes) |
CPUSurplusCreditsCharged |
획득 CPU 크레딧으로 갚아지지 않아 추가 요금이 부과되는 소비 잉여 크레딧 수. 소비 잉여 크레딧은 다음 중 하나가 발생할 때 청구돼요. (1) 소비 잉여 크레딧이 인스턴스가 24시간 동안 벌 수 있는 최대 크레딧 수를 초과하는 경우 — 최대치를 초과한 소비 잉여 크레딧은 시간이 끝날 때 청구돼요. (2) 인스턴스가 중지되거나 종료되는 경우. (3) 인스턴스가 unlimited에서 standard로 전환되는 경우. 단위: Credits (vCPU-minutes) |
CPU 크레딧 사용량 계산하기 (Calculate CPU credit usage)
인스턴스의 CPU 크레딧 사용량은 앞의 표에 설명된 인스턴스 CloudWatch 지표를 사용해 계산돼요.
Amazon EC2는 5분마다 지표를 CloudWatch로 보내요. 어느 시점에서든 지표의 이전 값은 5분 전에 보낸 그 지표의 이전 값을 의미해요.
Standard 인스턴스의 CPU 크레딧 사용량 계산하기
- CPU 사용률이 기준선보다 낮으면(이전 5분 간격에서 소비한 크레딧이 획득한 크레딧보다 적으면) CPU 크레딧 잔액이 증가해요.
- CPU 사용률이 기준선보다 높으면(이전 5분 간격에서 소비한 크레딧이 획득한 크레딧보다 많으면) CPU 크레딧 잔액이 감소해요.
수학적으로 다음 방정식으로 표현돼요.
CPUCreditBalance = prior CPUCreditBalance + [Credits earned per hour * (5/60) - CPUCreditUsage]
인스턴스의 크기는 인스턴스가 시간당 벌 수 있는 크레딧 수와 크레딧 잔액에 누적할 수 있는 획득 크레딧 수를 결정해요. 시간당 벌어들이는 크레딧 수와 각 인스턴스 크기의 크레딧 잔액 한도는 크레딧 표(credit table)를 참고하세요.
예시
이 예시는 t3.nano 인스턴스를 사용해요. 인스턴스의 CPUCreditBalance 값을 계산하려면 앞의 방정식을 다음과 같이 사용하세요.
CPUCreditBalance– 계산할 현재 크레딧 잔액.prior CPUCreditBalance– 5분 전의 크레딧 잔액. 이 예시에서 인스턴스는 2 크레딧을 누적했어요.Credits earned per hour– t3.nano 인스턴스는 시간당 6 크레딧을 벌어요.5/60– CloudWatch 지표 게시 사이의 5분 간격을 나타내요. 시간당 획득 크레딧에 5/60(5분)을 곱해 지난 5분 동안 인스턴스가 획득한 크레딧 수를 구해요. t3.nano 인스턴스는 5분마다 0.5 크레딧을 벌어요.CPUCreditUsage– 지난 5분 동안 인스턴스가 소비한 크레딧 수. 이 예시에서 인스턴스는 지난 5분에 1 크레딧을 소비했어요.
이 값을 사용해 CPUCreditBalance 값을 계산할 수 있어요.
CPUCreditBalance = 2 + [0.5 - 1] = 1.5
Unlimited 인스턴스의 CPU 크레딧 사용량 계산하기
버스터블 성능 인스턴스가 기준선 위로 버스트해야 할 때는 항상 잉여 크레딧을 소비하기 전에 누적 크레딧을 먼저 소비해요. 누적 CPU 크레딧 잔액을 모두 소진하면 필요한 만큼 오래 잉여 크레딧으로 CPU를 버스트할 수 있어요. CPU 사용률이 기준선 아래로 떨어지면 인스턴스가 획득 크레딧을 누적하기 전에 항상 잉여 크레딧을 먼저 갚아요.
다음 방정식에서 Adjusted balance라는 용어를 사용해 이 5분 간격에서 발생하는 활동을 반영해요. 이 값을 사용해 CPUCreditBalance와 CPUSurplusCreditBalance CloudWatch 지표의 값을 도출해요.
Adjusted balance = [prior CPUCreditBalance - prior CPUSurplusCreditBalance] + [Credits earned per hour * (5/60) - CPUCreditUsage]
Adjusted balance값이 0이면 인스턴스가 버스트에 모든 획득 크레딧을 소비했고 잉여 크레딧은 소비되지 않았음을 나타내요. 결과적으로CPUCreditBalance와CPUSurplusCreditBalance가 모두 0으로 설정돼요.Adjusted balance값이 양수면 인스턴스가 획득 크레딧을 누적했고, 이전 잉여 크레딧(있다면)이 갚아졌음을 나타내요. 결과적으로Adjusted balance값이CPUCreditBalance에 할당되고CPUSurplusCreditBalance는 0으로 설정돼요. 인스턴스 크기가 누적할 수 있는 최대 크레딧 수를 결정해요.
CPUCreditBalance = min [max earned credit balance, Adjusted balance]
CPUSurplusCreditBalance = 0
Adjusted balance값이 음수면 인스턴스가 누적한 모든 획득 크레딧을 소비했고, 추가로 잉여 크레딧도 버스트에 소비했음을 나타내요. 결과적으로Adjusted balance값이CPUSurplusCreditBalance에 할당되고CPUCreditBalance는 0으로 설정돼요. 역시 인스턴스 크기가 누적할 수 있는 최대 크레딧 수를 결정해요.
CPUSurplusCreditBalance = min [max earned credit balance, -Adjusted balance]
CPUCreditBalance = 0
소비 잉여 크레딧이 인스턴스가 누적할 수 있는 최대 크레딧 수를 초과하면 앞의 방정식처럼 잉여 크레딧 잔액이 최대치로 설정돼요. 남은 잉여 크레딧은 CPUSurplusCreditsCharged 지표로 나타내는 것처럼 청구돼요.
CPUSurplusCreditsCharged = max [-Adjusted balance - max earned credit balance, 0]
마지막으로 인스턴스가 종료되면 CPUSurplusCreditBalance로 추적되는 잉여 크레딧이 모두 청구돼요. 인스턴스가 unlimited에서 standard로 전환되면 남은 CPUSurplusCreditBalance도 청구돼요.