Nova 是如何统计 OpenStack 计算资源

本文详细介绍了Nova如何统计OpenStack的计算资源,包括CPU、RAM和DISK的统计方式,以及资源超配和调度的原理。在资源再统计阶段,Nova会根据虚拟机的实际使用情况调整free_ram_mb和free_disk_gb,可能导致负值。允许资源超配时,Nova的CPU、RAM和DISK过滤器允许一定的超配比例。指定host创建虚拟机时,nova-scheduler会跳过资源检查直接发送请求给目标compute节点。
摘要由CSDN通过智能技术生成

引言

运维的同事常常遇到这么四个问题:

  • Nova 如何统计 OpenStack 计算资源?
  • 为什么 free_ram_mb, free_disk_gb 有时会是负数?
  • 即使 free_ram_mb, free_disk_gb 为负,为什么虚拟机依旧能创建成功?
  • 资源不足会导致虚拟机创建失败,但指定了 host 有时却能创建成功?

本文以以上四个问题为切入点,结合 Kilo 版本 Nova 源码,在默认 Hypervisor 为 Qemu-kvm 的前提下(不同 Hypervisor 的资源统计方式差别较大 ),揭开 OpenStack 统计资源和资源调度的面纱。

Nova 需统计哪些资源

云计算的本质在于将硬件资源软件化,以达到快速按需交付的效果,最基本的计算、存储和网络基础元素并没有因此改变。就计算而言,CPU、RAM 和 DISK等依旧是必不可少的核心资源。

从源码和数据库相关表可以得出,Nova 统计计算节点的四类计算资源:

  • CPU: 包括 vcpus(节点物理 cpu 总线程数), vcpus_used(该节点虚拟机的 vcpu 总和)
  • RAM: 包括 memory_mb(该节点总 ram),memory_mb_used(该节点虚拟机的 ram 总和),free_ram_mb(可用 ram)
    Note: memory_mb = memory_mb_used + free_ram_mb
  • DISK:local_gb(该节点虚拟机的总可用 disk),local_gb_used(该节点虚拟机 disk 总和),free_disk_gb(可用 disk)
    Note:local_gb = local_gb_used + free_disk_gb
  • 其它:PCI 设备、CPU 拓扑、NUMA 拓扑和 Hypervisor 等信息

本文重点关注 CPU、RAM 和 DISK 三类资源。

Nova 如何收集资源

源码 可以看出,Nova 每分钟统计一次资源,方式如下:

  • CPU
    • vcpus: libvirt 中 get_Info()
    • vcpu_used: 通过 libvirt 中 dom.vcpus() 从而统计该节点上所有虚拟机 vcpu 总和
  • RAM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值