[Azure VM 101] VM Size와 Quota

2025. 3. 8. 16:50Engineering/Azure

Azure VM을 배포할 때 고가용성 옵션을 어떻게 선택하면 좋을지에 대해 지난번 글에서 소개했습니다.

이번에는 VM의 사이즈 (SKU라고도 함)를 어떻게 선택할지에 대해 다뤄보겠습니다.

또한 특정 사이즈 VM을 배포하기 위해서는 구독에 Quota가 충분한지 확인이 필요한데요. Quota 라는 개념에 대해서도 알아보겠습니다.

 

1. Azure VM Sizes 

1) Azure VM Size Naming

Azure VM 사이즈는 VM 에서 제공되는 vCPU 갯수, Temp Storage 제공 여부, Premium storage 지원 여부 등을 사이즈 이름에서 유추할 수 있도록 Azure만의 네이밍 방식을 정하고 따르고 있습니다. 

이 네이밍 방식을 한번 확인해 두면 처음 보는 Azure VM 사이즈이더라도 대강 어떤 특성을 갖는 사이즈인지 감 잡기가 쉬우니,

아래 VM 사이즈 네이밍 방식에 대한 Azure 공식문서를 한번 읽어보시길 추천 드립니다. 

https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownsize%2Cgen-b-fam%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#name-structure-breakdown

 

1) Family 

Azure VM 사이즈는 각 용도에 적합한 사이즈 군들을 나누어 Family라고 칭하고 있습니다. 

예를들어 GPU 가 제공되는 사이즈 군을 NC 또는 NV Family라고 하죠.

 

Family는 다양한 Azure VM 사이즈들의 대분류이기 때문에, Azure 에서 어떤 Family 사이즈들을 제공하고 있는지 살짝 살펴보는 것이 좋습니다.

이 글에서는 일부 특징적인 Family들에 대해서만 설명하도록 하겠습니다. 

Azure 에서 제공되는 모든 VM Family 및 사이즈들에 대한 자세한 설명은 아래 Azure공식 문서를 참고하시기 바랍니다. 

https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist

 

Virtual machine sizes overview - Azure Virtual Machines

Lists the different instance sizes available for virtual machines in Azure.

learn.microsoft.com

 

A. B-Family

먼저 B-Family 사이즈들은 테스트 용도나 일시적으로만 컴퓨팅 사용량이 발생하는 워크로드들에 적합한 사이즈입니다. 

고정된 vCPU 성능을 제공하는 다른 사이즈들과 달리, 필요에 따라 base CPU라 불리는 기준 성능치보다 더 높은 CPU성능을 활용할 수 있도록 Credit기반의 CPU 성능 제공 방식을 사용합니다. 

CPU사용률이 base CPU 제공량보다 낮을 때는 Credit이 적립되고.

CPU사용률이 base CPU 제공량보다 높을 때는 Credit을 소모하면서 base CPU 보다 높은 CPU 성능을 사용할 수 있습니다. 

그러나 Credit이 모두 소진된 경우에는 base CPU 성능치에 CPU성능이 throttle 됩니다. 

if Current CPU usage < Base CPU perf of VM; Increase credit balance 
if Current CPU usage > Base CPU perf of VM; Decrease credit balance
else if Current CPU usage == Base CPU perf of VM; No change in credit balance

 

Standard_B2s_v2 사이즈를 예시로 들어보겠습니다. 

Azure 문서에서 확인 가능한 B2s_v2사이즈의 상세 스펙은 아래 표와 같습니다. 

vCPU는 2개를 제공하고, Base CPU 성능치가 40% 입니다. B시리즈 사이즈마다 Initial Credit, Credits banked/hour, Max Banked Credit값도 서로 다르게 주어짐을 확인할 수 있습니다.  

Size vCPUs Base CPU Performance of VM (%) Initial Credits Credits banked/hour Max Banked Credits
Standard_B2s_v2 2 40% 60 48 1152

 

 

초기 Creidt 60이 있기 때문에, 처음 부터 base CPU 성능치 40% 이상의 성능을 사용할 수 있습니다. 

그러나 지속적으로 40% 이상의 성능치를 사용한다면 Credit이 결국 소진 되고, 이 때는 2개 vCPU중 40%의 성능치로 CPU성능이 throttle됩니다. 

 

실제 B-Famiily VM 사이즈를 가지고 CPU로드 테스트를 하면서 Credit사용량 및 CPU사용량을 확인해보면 아래와 같습니다.

위쪽 그래프가 Remaining Credit이고, 아래쪽 그래프가 CPU 사용량입니다. 

  • ((1번 구간)) 에서는 CPU사용량이 없어서 Credit이 최대치로 적립되어 있는 상황이고.
  • ((2번 구간)) 에서는 CPU사용량이 100%를 치며 base CPU사용량보다 높은 CPU성능을 사용하는 상황으로 이때 Credit이 점차 소모되는 것을 알 수 있습니다.
  • ((3번 구간)) 에서는 Credit이 모두 소진되어 CPU사용량이 baseCPU 사용량으로 throttle된 상황입니다.

 

출처: https://singhkays.com/blog/understanding-azure-b-series/

 

이렇게 B-Family 사이즈를 사용하면 컴퓨팅 사용량이 일시적으로 치솟는 워크로드 일때, 그 동안 적립해왔던 Creidt으로 기준 성능치보다 높은 CPU성능까지도 활용이 가능하다는 장점이 있습니다. 

그러나 지속적으로 높은 컴퓨팅 사용량을 요구하는 상용 서비스 워크로드의 경우에는 base CPU 성능치로 CPU성능이 throttle 될 수 있으므로 B-Family 사용이 적합하지 않습니다.

 

B. NC, ND, NG, NV - Family

GPU가 제공되는 사이즈들은 알파벳 'N'이 포함된 Family 이름을 갖습니다. 

이 GPU Family 사이즈들은 GPU를 제공할 뿐만 아니라, 많은 연산량 처리를 서포트 할 수 있도록 메모리, Disk IO성능, 네트워크 성능도 일반 사이즈군들보다 훨씬 높은 사양들을 제공합니다. 

 

사이즈 별로 제공되는 GPU카드 종류가 서로 다르니 각 사이즈 상세 정보를 확인해 보길 권장드립니다.

출처: https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#gpu-accelerated

 

 

주의하실 점은 N-Family 사이즈 VM 들을 생성하고 실제로 GPU를 사용하기 위해서는 GPU드라이버를 설치해야 합니다. 

NVIDIA 및 CUDA 드라이버를 직접 다운 받거나, Azure NVIDIA GPU Driver Extension를 설치해야합니다.

Azure NVIDIA GPU Driver Extension을 사용하면 VM N-family 사이즈에 맞는 GPU드라이버를 자동으로 설치해줍니다.

이에 대한 자세한 방법은 아래 문서를 참고하시기 바랍니다. 

// Setup NVIDIA GPU Driver

https://learn.microsoft.com/en-us/azure/virtual-machines/linux/n-series-driver-setup

 

2. Quota 

Quota(할당량) 이란 내 구독 내에서 사용할 수 있는 자원별 최대 수량 입니다. 

내 구독에 할당된 전체 Quota및 Quota 사용량은 Azure 포탈 > 구독 > Usage+quotas 메뉴에서 확인 가능합니다.

아래 예시 이미지를 보면 저는 Austrailia Central 지역에 VM을 최대 25,000개 까지 생성할 수 있네요.

 

 

VM 사용하실 때에는 내가 원하는 지역 및 VM 사이즈에 대한 vCPU 할당량이 충분한지 항상 유의 하셔야 합니다.

2 단계 할당량을 유의하셔야 하는데요. 아래 2개 Quota들을 항상 확인하시기 바랍니다.

  • 첫 번째)) 해당 지역의 총 vCPU 할당량 - "Total Regional vCPUs" 
  • 두 번째)) 해당 지역의 해당 VM 사이즈에 대한 vCPU 할당량 - "Standard XX Family vCPUs" 

 

 

예를들어 제가 KoreaCentral 지역에 'Standard_D2s_v5' VM (2개 vCPU사용하는 사이즈)을 배포하고 싶다고 합시다. 

 

그럼 먼저 Korea Central 지역의 "Total Regional vCPUs" Quota 잔여량이 충분한지 확인합니다. 

아래 보시는 것처럼 제 구독에는 Korea Central 지역에 Total Regional vCPU Quota는 최대20개이며, 현재 8개 vCPU 사용 중이므로.   Korea Central 지역에 잔여 vCPU Quota는 20-8 = 12 vCPU입니다. 
따라서 2 vCPU를 사용하는 Standard_D2s_v5 사이즈를 Korea Central 지역에 배포하기에 부족함이 없습니다.

 

다음으로 Korea Central 지역에 D2s_v5사이즈가 속하는 DSv5 Family 에 대한 Quota 잔여량이 충분한지 확인합니다.

제 구독에서 Korea Central 지역에 Dsv5 Family vCPU Quota는 20개이고, 현재 8개 사용중이네요.

마찬가지로 20-8 = 12 vCPU 에 해당하는 Dsv5 Family VM 들을 추가로 배포할 수 있으며, Standard_D2s_v5 사이즈를 배포하기에 부족함이 없음을 알 수 있습니다. 

 

이렇게 2가지 Quota를 확인했으면, 적어도 Quota 부족으로 인해서 VM 배포가 실패하는 일은 없습니다! 

 

FAQ

Q>> 중지된 VM에 대해서도 Quota 사용량이 카운트 되나요? 

A>> 네. Quota 사용량은 현재 구독에 배포되어 있는 모든 Running/Non-Running VM에 대해 카운트됩니다. VM을 삭제해야만 Quota 사용량에서 제외됩니다.

 

 

Q>> Quota는 충분한데도 VM배포가 실패합니다. VM 할당(Allocation) 실패라는 에러 메시지가 보입니다. 

A>> 현재 Azure 데이터센터에 요청하신 VM 사이즈를 수용할 물리 컴퓨팅 자원의 'Capacity'가 부족한 경우 VM 할당(Allocation)실패를 경험하실 수 있습니다. 'Capacity' 는 실제 Azure 데이터 센터에 가용 가능한 컴퓨팅 자원을 의미하며, 전 Azure 사용자 유입 변동에 따라서 지속적으로 사용량이 변동됩니다.

 

반면 'Quota'는 특정 사용자 구독에서 최대로 사용할 수 있는 자원 수량을 제한하는 개념으로, 'Quota' 확보가 'Capacity' 확보까지 보장하는 것은 아닙니다. 

 

'Capacity' 부족으로 VM 할당(Allocation)이 실패하는 경우에는 대체 사이즈, 대체 지역 사용을 고려하거나.

시간 간격을 두고 Capacity가 회복되길 기대하며 VM 배포를 다시 시도하는 방법밖에 없습니다.