You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Azure VM闲置CPU核心并实现成本节约?

如何查询Azure虚拟机总CPU核心数、已用核心数并识别闲置VM节约成本

一、获取VM总CPU核心数

方法1:Azure CLI

直接列出所有VM的规格及对应核心数:

# 列出所有VM的名称和VM规格
az vm list --query "[].{VM名称:name, VM规格:hardwareProfile.vmSize}" -o table

# 查询指定区域内各VM规格的核心数
az vm list-sizes --location <你的Azure区域> --query "[].{规格名称:name, 总核心数:numberOfCores}" -o table

将两个结果对应,就能得到每台VM的总CPU核心数。

方法2:Azure Portal

进入目标VM的概览页面,在硬件配置区域查看VM规格,鼠标悬停在规格名称上会显示核心数,或者在大小页面查看详细参数。

二、获取已使用CPU核心数

已用核心数 = 总核心数 × 平均CPU使用率百分比,核心是获取VM的CPU使用率:

方法1:Azure CLI查询实时/历史CPU使用率

# 查询单台VM过去1小时的平均CPU使用率
az monitor metrics list --resource <VM的资源ID> --metric "Percentage CPU" --aggregation Average --interval PT1H --query "value[].average" -o tsv

拿到百分比后乘以总核心数,即可算出已用核心数。

方法2:Log Analytics批量查询多台VM

如果有大量VM,可以用Log Analytics的Kusto查询批量统计:

Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time"
| summarize 平均CPU使用率 = avg(CounterValue) by Computer, bin(TimeGenerated, 7d)
| join kind=inner (
    // 这里可以提前导入VM规格与核心数的映射表,或者手动关联
    datatable(Computer:string, 总核心数:int)
    [
        "vm-01", 2,
        "vm-02", 4
    ]
) on Computer
| extend 已用核心数 = 总核心数 * (平均CPU使用率 / 100)
| project Computer, 总核心数, 平均CPU使用率, 已用核心数

三、计算可用CPU核心数

直接通过公式计算:
可用核心数 = 总核心数 - 已用核心数
通常如果可用核心数占总核心数的90%以上(即CPU使用率低于10%),可视为潜在闲置VM。

四、识别闲置VM

定义闲置标准(可根据业务调整):

  • 连续7天平均CPU使用率低于5%
  • 内存使用率持续低于10%
  • 无网络流量或磁盘IO极低

批量识别方法(Log Analytics)

// 统计7天内VM的平均CPU、内存使用率
Perf
| where ObjectName in ("Processor", "Memory")
| where CounterName in ("% Processor Time", "% Used Memory")
| summarize avgValue = avg(CounterValue) by Computer, ObjectName, bin(TimeGenerated, 7d)
| pivot(ObjectName, any(avgValue))
| rename 平均CPU使用率 = "Processor_any_avgValue", 平均内存使用率 = "Memory_any_avgValue"
| where 平均CPU使用率 < 5 and 平均内存使用率 < 10
| project Computer, 平均CPU使用率, 平均内存使用率

五、成本节约措施

  • 调整VM规格:将闲置VM降级到匹配负载的小规格,比如从Standard_D4s_v3(4核)改成Standard_D2s_v3(2核),CLI命令:
    az vm resize --resource-group <资源组名> --name <VM名称> --size <目标规格>
    
  • 解除分配闲置VM:长期不用的VM直接解除分配(停止仍会收取计算费用,解除分配仅收存储费):
    az vm deallocate --resource-group <资源组名> --name <VM名称>
    
  • 启用自动启停:为非7×24运行的VM设置自动启停规则,比如工作日早8点启动,晚6点停止,可通过Azure Portal的VM自动启停功能配置。
  • 替换为Spot VM:如果闲置VM运行的是可中断的工作负载(比如测试、批量处理),换成Azure Spot VM,成本最高可降低90%。

内容的提问来源于stack exchange,提问作者swadesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:10:27