实例大小灵活性 (ISF)

实例大小灵活性(ISF)是Azure保留实例的一项功能,允许单个保留购买自动应用于多个SKU,而不必绑定到一个特定大小。 只要资源属于同一灵活性组,ISF 就根据使用情况动态应用预留权益,而不是要求客户预测和预留特定 SKU。 这可确保客户在工作负载纵向扩展、缩减或在兼容大小间转移时,继续享受预留价格,从而减少运营开销并提高预留资源的利用率。

实例大小灵活性的工作原理

每个支持预留功能的服务都会定义支持 ISF 的实例大小灵活性组。 只有同一灵活性组中的 SKU 可以共享预留权益。 例如,同一 VM 系列中的多个 VM 规格可以位于一个组中,而不同系列中的规格则无法在一个组中。

在灵活性组中,每个 SKU 都有相对比率:

  • 较小的尺寸具有较低的比率。
  • 较大尺寸有更高的比率。

购买预留时,您承诺提供固定数量。 Microsoft 将预留权益应用于符合条件的使用情况,直到消耗完毕。 比率是相对单位,而不是价格。

Microsoft持续评估运行中的资源使用情况,并在预留范围内,按照先到先得的原则,将预留折扣应用于符合条件的资源。 如果使用量超过购买数量,则剩余使用量按即用即付费率计费。 无需手动分配。

示例

虚拟机示例

使用已优化实例大小灵活性的虚拟机预留实例时,所购买的预留可以应用到同一实例大小灵活性组中的虚拟机 (VM) 大小。 换句话说,当你购买了实例灵活性组中任何大小的虚拟机预留实例,该实例将应用于该组内的所有大小。 例如,如果您购买了列在 DSv2 系列中的某个 VM 规格(例如 Standard_DS3_v2)的预定,那么该预定折扣可以应用于同一实例灵活性组中列出的其他规格。

Standard_DS1_v2 Standard_DS2_v2 Standard_DS3_v2 Standard_DS4_v2但预留折扣不适用于不同实例大小灵活性组中列出的 VM 大小,例如 DSv2 系列高内存中的 SKU:Standard_DS11_v2、Standard_DS12_v2等。

在实例大小灵活性组中,预留折扣适用于多少 VM 取决于在购买预留时选取的 VM 大小。 也取决于运行的 VM 的大小。 比率列用于比较该实例大小灵活性组中每个 VM 大小的相对资源占用情况。 请使用比率值计算预留折扣在您运行的 VM 上的应用情况。

Microsoft Foundry 示例

假设您购买了一份 Microsoft Foundry 300 PTU 的全球储备吞吐量预留服务。

  • 如果为 Azure OpenAI Service 部署 250 个全局 PTU,在同一区域中为 DeepSeek 部署 50 个全局 PTU,则预留将涵盖所有 300 个 PTU。

全局、数据区域和区域预留不可互换,因此每个部署类型都需要自己的匹配预留。

其他服务

预留权益的匹配不限于虚拟机预留。 其他服务也存在类似的特定于服务的预留行为,您可以在每种预留类型的单独文档中找到详细信息。

使用Azure目录 API 提取实例大小灵活性比率

本部分介绍如何使用Azure预留目录 API 提取Azure预留的实例大小灵活性(ISF)比率。 ISF 允许跨同一资源系列和区域中的不同大小灵活应用预留权益。 这适用于各种Azure预留类型,包括Virtual Machines、Azure Redis 缓存和其他受支持的服务。

您将了解到的内容

如何通过 PowerShell 使用 Azure 目录 API 提取各种Azure预留类型的实例大小灵活性比率,构造 ISF CSV 文件,并处理支持 ISF 的不同资源类型。

先决条件

  • 具有适当权限的 Azure 订阅
  • 访问Azure资源管理 API
  • 使用 Az.Reservations 模块的 PowerShell(适用于 PowerShell 示例)
  • 了解要为其生成 ISF 比率的Azure资源类型

ISF CSV 文件结构

生成的 CSV 文件包含三列:

说明
InstanceSizeFlexibilityGroup 灵活性组名称(例如“Av2 Series”、“General Purpose Gen5”)
ArmSkuName Azure Resource Manager SKU 名称(例如“Standard_A1_v2”、“GP_Gen5_2”)
Ratio SKU 所属组内的灵活性比率

API 参考文档

对于想要直接使用 REST API 的开发人员,请参阅 Azure 预留目录 REST API 文档

ISF 比率信息可在每个目录项的数组中的 skuProperties API 响应中找到。 查找具有以下名称的属性:

  • ReservationsAutofitGroup - 包含灵活性组名称
  • ReservationsAutofitRatio - 包含该 SKU 的比率值

标准化 ISF 比率

对于组中最小的 SKU,API 和 PowerShell 的原始 ISF 比率并不总是从 1 开始。 例如,BS Series 组从 0.25 开始,而 Ddsv5 Series2 开始。 若要使比率更易于比较,可以对其进行规范化,因此每个灵活性组中的最小 SKU 的比率为 11。

# Function to normalize ISF ratios so the smallest SKU in each group = 1
function Get-NormalizedISFRatios {
    param(
        [Parameter(Mandatory=$true)]
        [PSCustomObject[]]$ISFData
    )

    $NormalizedData = @()
    $groups = $ISFData | Group-Object InstanceSizeFlexibilityGroup

    foreach ($group in $groups) {
        # Find the minimum ratio in the group
        $minRatio = ($group.Group | ForEach-Object { [double]$_.Ratio } | Measure-Object -Minimum).Minimum

        foreach ($item in $group.Group) {
            $NormalizedData += [PSCustomObject]@{
                InstanceSizeFlexibilityGroup = $item.InstanceSizeFlexibilityGroup
                ArmSkuName                   = $item.ArmSkuName
                Ratio                        = [math]::Round([double]$item.Ratio / $minRatio, 4)
            }
        }
    }

    return $NormalizedData
}

# Normalize the extracted ISF data
$NormalizedRatios = Get-NormalizedISFRatios -ISFData $ISFRatios

# Export to CSV
$NormalizedRatios | Export-Csv -Path "isf-ratios-normalized.csv" -NoTypeInformation

# Display sample results
$NormalizedRatios | Select-Object -First 10 | Format-Table

示例:规范化前后

BS 系列

ArmSkuName 原始比率 规范化比率
Standard_B1ls 0.25 1
Standard_B1s 0.5 2
Standard_B2s 2 8

Ddsv5 系列

ArmSkuName 原始比率 规范化比率
Standard_D2ds_v5 2 1
Standard_D4ds_v5 4 2
Standard_D8ds_v5 8 4
Standard_D16ds_v5 16 8
Standard_D32ds_v5 32 16
Standard_D48ds_v5 48 24
Standard_D64ds_v5 64 32
Standard_D96ds_v5 96 48

规范化 CSV 文件结构

说明
InstanceSizeFlexibilityGroup 灵活性组名称
ArmSkuName Azure Resource Manager SKU 名称
Ratio 规范化比率(每个组中的最小 SKU = 1)

注释

规范化后,比率在每个组中保持成正比。 规范化比率为 2 表示 SKU 占用该组中最小 SKU 的预留单位的两倍。

使用 PowerShell

安装所需的模块

# Install the Az.Reservations module if not already installed
Install-Module -Name Az.Reservations -Force -AllowClobber

# Connect to Azure
Connect-AzAccount

使用 PowerShell 获取目录数据

# Set parameters
$SubscriptionId = "your-subscription-id"
$Location = "chinanorth3"
$ResourceType = "VirtualMachines"  # Change for different resource types

# Set subscription context
Set-AzContext -SubscriptionId $SubscriptionId

# Get catalog data
$CatalogData = Get-AzReservationCatalog -SubscriptionId $SubscriptionId -Location $Location -ReservedResourceType $ResourceType

# Display results
$CatalogData | Select-Object Name, ResourceType | Format-Table

从 PowerShell 响应中提取 ISF 比率

Catalogs API 响应中的 skuProperties 数组包含 ISF 比率信息。 查找名称为“InstanceSizeFlexibilityRatio”和“InstanceSizeFlexibilityGroup”的属性。

PowerShell 分析示例

# Function to extract ISF data from catalog response
function Get-ISFRatios {
    param(
        [Parameter(Mandatory=$true)]
        $CatalogData
    )
   
    $ISFData = @()
   
    foreach ($item in $CatalogData) {
        $flexGroup = ""
        $ratio = ""
       
        # Extract ISF properties
        foreach ($property in $item.SkuProperties) {
            if ($property.Name -eq "ReservationsAutofitGroup") {
                $flexGroup = $property.Value
            }
            elseif ($property.Name -eq "ReservationsAutofitRatio") {
                $ratio = $property.Value
            }
        }
       
        # Only include items with both group and ratio
        if ($flexGroup -and $ratio) {
            $ISFData += [PSCustomObject]@{
                InstanceSizeFlexibilityGroup = $flexGroup
                ArmSkuName = $item.Name
                Ratio = $ratio
            }
        }
    }
   
    return $ISFData
}

# Extract ISF data
$ISFRatios = Get-ISFRatios -CatalogData $CatalogData

# Export to CSV
$ISFRatios | Export-Csv -Path "isf-ratios.csv" -NoTypeInformation

# Display sample results
$ISFRatios | Select-Object -First 10 | Format-Table

重要注意事项

  • 分页:API 返回分页结果。 使用 nextLink 属性检索所有数据。
  • 特定于区域的数据:ISF 比率可能因Azure区域而异。 为每个目标区域生成单独的文件。
  • 资源类型支持:并非所有Azure服务都支持 ISF。 检查 InstanceSizeFlexibilityGroup 属性的 API 响应。
  • 常规更新说明:当引入新的资源容量时,ISF 比率可能会更改。 定期更新文件。
  • 服务特定的比率:不同的服务可能具有不同的 ISF 计算方法和比率缩放。

故障排除

常见问题和解决方案

問题 解决方案
身份验证错误 确保具有 Microsoft.Capacity/catalogs/read 权限
空结果 验证位置参数是否与Azure区域名称匹配,并且资源类型支持 ISF
缺少 ISF 属性 某些资源族可能不支持 ISF - 这是预期行为
资源类型无效 检查目标服务支持的 reservedResourceType 值

后续步骤