1、Openstack是否提供了NUMA的入口以供我们使用?
是的,已经提供了,并且可以正常使用。
2、有哪些入口?
1) Flavor
为Flavor添加元数据,即extra-specs,通过设置以下几种关键字:
hw:numa_nodes=NN - VM中NUMA的个数
hw:numa_mempolicy=preferred|strict - VM中 NUMA 内存的使用策略
hw:numa_cpus.0=<cpu-list> - VM 中在NUMA node 0的cpu
hw:numa_cpus.1=<cpu-list> - VM 中在NUMA node 1的cpu
hw:numa_mem.0=<ram-size> - VM 中在NUMA node 0的内存大小(M)
hw:numa_mem.1=<ram-size> - VM 中在NUMA node 1的内存大小(M)
2) Image
为Image添加元数据,即Image的metadata,通过设置以下几种关键字:
hw_numa_nodes=NN - numa of NUMA nodes to expose to the guest.
hw_numa_mempolicy=strict|prefered - memory allocation policy
hw_numa_cpus.0=<cpu-list> - mapping of vCPUS N-M to NUMA node 0
hw_numa_cpus.1=<cpu-list> - mapping of vCPUS N-M to NUMA node 1
hw_numa_mem.0=<ram-size> - mapping N MB of RAM to NUMA node 0
hw_numa_mem.1=<ram-size> - mapping N MB of RAM to NUMA node 1
以下是openstack接口文档中对Flavord extra-specs 和 image metadata所提供的接口截图,接口文档可在openstack官网获取。
3. openstack代码中,处理NUMA的地方在哪里?
对NUMA相关数据的解析和处理,openstack Juno版本中,提供了以下class(在nova/virt/hardware.py文件中):
1) class VirtNUMATopologyCell(object):
NUMA单元,定义了NUMA cell内的基本数据成员。
2) class VirtNUMATopologyCellLimit(VirtNUMATopologyCell):
NUMA限制量单元,定义了NUMAcell内可以使用资源的最大限。
3) class VirtNUMATopologyCellUsage(VirtNUMATopologyCell):
NUMA使用量单元,定义了NUMA cell内已使用的资源。
4) class VirtNUMATopology(object):
NUMA拓扑单元,定义了NUMA 的基本数据成员,即cells[]
5) class VirtNUMAInstanceTopology(VirtNUMATopology):
为guest VM提供NUMA相关的操作。
6) class VirtNUMAHostTopology(VirtNUMATopology):
为Host提供NUMA相关的操作。
4. openstack代码中,用户配置的NUMA参数,在创建VM时,是怎么被处理的?
1) 创建VM时,用户在image和flavor所配置的NUMA参数,随着创建VM的参数image_href和instance_type传入。
2) 在创建VM内部,有一步“参数校验”self._validate_and_build_base_options()的操作,该“参数校验”中,有一步操作会调用VirtNUMAInstanceTopology的方法获取到guest VM的NUMA拓扑,并将其保存在base_options变量中返回。
1> 参数校验:
2> 在“参数校验”中,获取guest VM的NUMA拓扑信息:
3> 将guest VM的NUMA拓扑信息,保存到base_options,最终返回:
3) 然后,创建VM函数,会将返回的base_options,通过self._provision_instances()方法更新到instance中。
1> 调用self._provision_instances()方法:
2> _provision_instances()方法内部,将base_options更新到instance中:
4) 这样一来,用户配置的NUMA信息,就被保存到了instance中,在数据库instance_extra表中可以查到对应的信息,如下。
5) 当VM启动、恢复、迁移等需要用到NUMA信息时,就会调用到_get_guest_numa_config()方法(后续会讲到),通过该方法获取到对应VM所需要的NUMA配置。该方法内部,有一步,会从instance中,获取到对应的NUMA拓扑。
1> _get_guest_numa_config()会调用self._get_cpu_numa_config_from_instance()方法获取guest VM的NUMA拓扑。
2> 然后,内部又会调用InstanceNUMATopology的方法(在/nova/objects/instance_numa_topology.py文件内)从instance中获取到NUMA拓扑,保存到一个重要的变量guest_cpu_numa(后续会讲到)中返回。
3> InstanceNUMATopology中,从instance获取NUMA拓扑的具体函数。
5、 openstack代码中,获取guest VM的NUMA配置,并且匹配Host NUMA配置的具体流程和逻辑是什么?(详见附件:NUMA源码结构.PNG)
How to use openstack NUMA function
(该部分以Flavor为例,已证实对于image的配置,同样有效!)
一、自动平均分配NUMA cell
1、在Dashboard中,创建Flavor,和元数据hw:numa_nodes和hw:numa_mempolicy,示例如下(这里创建的flavor名字叫“test_numa_by_num”,4 CPU,2G内存):
2、根据此flavor,创建一个VM。示例如下(这里创建的VM名字为“numa_vm_1”):
3、通过virsh命令,查看我们刚才创建的那个VM——“numa_vm_1”:
二、手动指定分配NUMA cell
1、创建Flavor,和元数据hw:numa_nodes、hw:numa_mempolicy、hw:numa_cpus.0、hw:numa_cpus.1、hw:numa_mem.0、hw:numa_mem.1,并且设置cell_0的cpu为2-3,cell_1的CPU为0-1。示例如下(这里创建的flavor名字叫“test_numa_by_specify”,4 CPU,2G内存):
2、根据此flavor,创建一个VM。示例如下(这里创建的VM名字为“numa_vm_2”):
3、通过virsh命令,查看我们刚才创建的那个VM——“numa_vm_1”:
相关推荐
openstack-Neutron入门
资源名称:OpenStack菜鸟最佳入门宝典 资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
openstack快速入门,适合初学者的入门书籍! 内含安装步奏!
OpenStack开发快速入门示例
Openstack架构分析.pdf
OpenStack云计算快速入门教程 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立、运行自己的云计算和存储设施。本教程将详细介绍OpenStack的概况、组成部分、云计算基础设施服务(IaaS)、平台即...
"OpenStack架构分析" OpenStack架构分析是指对OpenStack云计算平台的架构进行分析和研究,旨在帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云、大云、小云提供可扩展的、灵活的云计算。 OpenStack是一个...
"鸿鹄论坛《一天教会你openstack云计算入门》02-Openstack组件介绍-誉天邹SIR"这一资源显然是一份关于OpenStack入门的教学材料,由资深专家邹SIR讲解,对于初学者来说非常有价值。 首先,我们来了解一下OpenStack的...
内容概要:本文是一份面向新手的OpenStack入门指南,介绍了OpenStack的基本概念、核心组件及其主要功能,并探讨了OpenStack的应用场景与社区支持状况。文中详细列出了各个主要模块如Nova(计算)、Neutron(网络)、...
红帽Openstack快速入门,开源云计算至少分享,适合做云计算的同学学习,掌握云计算掌握未来。
适合Openstack入门使用,了解Openstack架构,各个模块的组成,部署,维护。
而OpenStack作为云计算的管理平台,通过其组件和网络技术的集成,提供了强大的云服务功能,包括虚拟机管理、网络和存储服务等,是构建和管理云环境的重要工具。随着技术的发展,云计算和OpenStack将会继续推动IT行业...
在进行OpenStack Nova源码分析时,我们需要深入了解其架构、核心模块以及关键流程。 首先,Nova的整体架构基于服务模型,包括以下主要服务: 1. **nova-api**:API服务,对外提供RESTful API接口,用于与其他...
OPENSTACK 命令行快速操作入门指南 OPENSTACK 是一个开源的云计算平台,提供了丰富的命令行工具来管理和维护云计算资源。本文档旨在提供一个快速入门指南,帮助读者快速掌握 OPENSTACK 命令行工具的使用。 ...
OpenStack是一个开源的云计算平台项目,由NASA和Rackspace共同发起,旨在为公共及私有云的建设与管理提供软件支持。它包含了一系列的组件,这些组件协同工作,为用户提供一个完整的云计算环境。OpenStack通常用于...
2012年的OpenStack用户调查分析报告是一个对当时OpenStack生态系统中不同角色如用户、消费者、运营商和生态合作伙伴的深入洞察。报告详细分析了各个参与者的当前状况,旨在挖掘云服务市场现状和未来的发展需求。这份...
从提供的文件内容来看,知识点主要集中在OpenStack的技术背景、发展历程、社区活跃度、以及HP...这些内容构成了OpenStack生态分析的重要知识点,为理解OpenStack的全球影响力以及HP在其中扮演的角色提供了丰富的信息。
openstack实战演练与开发入门 罗勇主讲 共四卷 卷4,希望对你有帮助。