[openstack]资源统计实现
来源:互联网 发布:电影票订购软件 编辑:程序博客网 时间:2024/05/21 15:48
声明:
本博客欢迎转发,但请保留原作者信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
原文地址:http://blog.csdn.net/gtt116/article/details/9618403
本文将介绍openstack(grizzly)版本中nova是如何统计宿主机可用资源的,以便debug和运维openstack。
在openstack中,对虚拟机的管理有两层:openstack自身和Hypervisor(libvirt)。由于不同的层次可能导致数据不统一,比如vm在libvirt中,但是不在openstack中,或者相反。这时的资源统计要如何处理?openstack的做法是两者都统计,但是真正列入考虑范围(写入数据库)的是openstack自身统计出的结果。接下来将详细介绍openstack是如何进行资源统计的。
openstack关注宿主机的如下资源:
- vcpus
- vcpus_used
- memory_mb
- memory_mb_used
- local_gb
- local_gb_used
- cpu_info
- disk_available_least
- free_ram_mb
- free_disk_gb
核心的代码在nova/virt/libvirt/driver.py:LibvirtDriver.get_available_resource()中,有兴趣的同学可以自己看代码,
这里只列出各个资源是如何统计的。
- vcpus: 通过libvirt的nodeinfo直接获取
- vcpus_used: 通过libvirt列出所有的vm,然后遍历叠加所有vm的vcpus
- memory_mb: 通过libvirt nodeinfo直接获取
- memory_mb_used: 计算/proc/meminfo中的信息,计算出可用的(MemFree + Buffers + cached),然后用上面的memory_mb - 可用,剩下的就是used
- local_gb: 通过python的os.statvfg接口查看instance目录的大小
- local_gb_used: 和local_gb一样
- cpu_info: 从libvirt中获取
- disk_available_least: 它和local_gb的区别是local_gb是镜像的实际大小,此项是计算了虚拟大小之后的剩余量。所以一定小于(local_gb - local_gb_used)。
- free_ram_mb: memory_mb - memory_mb_used
- free_disk_gb: local_gb - local_gb_used
但是,但是! 在nova不是简单的把这些数据放到数据库中,而是另外计算了一遍vcpus, memory和local_gb。
在第一次获取上面的基本数据之后,nova会从数据库中拿到所有理论上在此宿主机上的instance,然后基于instance重新计算这些资源使用情况。
vcpus_used = 0memory_mb_used = CONF.reserved_host_memory_mblocal_gb_used = CONF.reserved_host_disk_mb / 1024free_ram_mb = memory_mb - memory_mb_usedfree_disk_gb = local_gb - local_gb_used
2. 然后,找出所有没有删除的instance,
根据每一个instance的详细信息计算vcpus_used,local_gb_used, memory_mb_used,之后再算出free_ram_mb, free_disk_gb
所以在日志中,可以发现有两中汇报资源的格式:
格式1.
2013-07-29 17:03:25.486 DEBUG nova.compute.resource_tracker [-] Hypervisor: free ram (MB): 10253 from (pid=17247) _report_hypervisor_resource_view /opt/stack/nova/nova/compute/resource_tracker.py:3312013-07-29 17:03:25.487 DEBUG nova.compute.resource_tracker [-] Hypervisor: free disk (GB): 13 from (pid=17247) _report_hypervisor_resource_view /opt/stack/nova/nova/compute/resource_tracker.py:3322013-07-29 17:03:25.487 DEBUG nova.compute.resource_tracker [-] Hypervisor: free VCPUs: 4 from (pid=17247) _report_hypervisor_resource_view /opt/stack/nova/nova/compute/resource_tracker.py:337
格式2.
2013-07-29 17:03:25.556 AUDIT nova.compute.resource_tracker [-] Free ram (MB): 104822013-07-29 17:03:25.557 AUDIT nova.compute.resource_tracker [-] Free disk (GB): 172013-07-29 17:03:25.557 AUDIT nova.compute.resource_tracker [-] Free VCPUS: 2
格式1中的数据就是直接从libvirt中的资源情况,格式2中的数据是openstack中的资源情况。
- [openstack]资源统计实现
- openstack节点资源统计
- Nova 是如何统计 OpenStack 计算资源
- Nova 是如何统计 OpenStack 计算资源
- Nova是如何统计OpenStack计算资源的(转)
- 统计资源
- openstack学习资源
- Openstack 相关资源 转载
- OpenStack资源网址收集
- OpenStack学习资源
- OpenStack相关资源
- OpenStack 学习资源
- OpenStack 可用资源整理
- openstack学习资源
- openstack资源部署策略
- openstack资源使用情况查询
- zabbix聚合检测(aggregate)实现OpenStack计算资源集中显示
- 多元统计学习资源
- HIVE中MAPJOIN可以使用的场景分析
- USB充电插拔和usb Debugging connect提示
- SAMARTFORM学习问题1
- object 入门
- Android使用Application总结
- [openstack]资源统计实现
- java 发送邮件
- 复制到剪切板 兼容(IE/FF/Chrome/..)
- 1083 Moving Tables DP
- Spring的applicationContext.xml自定义名称
- js如何让当前时间再加几天并且让时间自动变成下一年或者下一个月
- Android Stock Browser Web App开发当中遇到的问题(持续更新)
- Mysql InnoDB读书笔记
- jquery 校验框架