admin 管理员组文章数量: 1086019
2024年1月15日发(作者:boundary怎么改中文)
ELECTRONICS WORLD・探索与观察基于国产服务器的虚拟化技术研究海装驻武汉地区第三军事代表室 殷 虎作为云计算中的技术基础,服务器虚拟化技术在各类服务器中得到了广泛的应用。对于自主可控的国产服务器来说,虚拟化技术的研究也显得尤为重要。文章结合国产服务器的发展现状,对飞腾处理器在CPU虚拟化、内存虚拟化、时钟虚拟化和Hypervisor移植等方面进行了相关研究,分析了在国产处理器下如何实现虚拟化技术。1 虚拟化技术简介通常情况下,计算机操作系统、软件是直接运行在真实独立的物理硬件上的,而虚拟化技术则是在真实独立的物理硬件基础上,虚拟出对应资源供操作系统、软件进行使用。这种把有限的固定资源根据不同需求进行重新规划以达到最大利用率,实现简化管理、优化资源等目的的解决方案,就叫做虚拟化技术。虚拟化技术的本质就是实现将运行在真实环境上的操作系统或应用在虚拟出来的环境中运行。2 国产服务器的发展现况近年来,尤其是2018年中兴事件以来,武器装备国产化已提到了一个新的高度。中央陆续出台了系列文件,到2035年,我国武器装备要实现100%国产化。在国家的大力扶持下,龙芯、申威、兆芯、海光、飞腾等国产处理器企业发展迅速。龙芯处理器采用的是MIPS体系结构,申威处理器采用的Alpha体系结构,这两个处理器虚拟化支持能力还在初级阶段,无法满足高性能的计算需求。兆芯、海光、飞腾在虚拟化支持上较为成熟,可以支持云平台的部署和运行。兆芯处理器通过引进X86指令集和微内核设计,先后推出了ZX-C系列、KX-x000系列,近期推出的KX-6000系列主频达到了3.0GHz,还发布了KH-S20000安全增强型处理器。海光处理器则基于AMD授权的Zen架构x86服务器处理器Dhyana x86开始生产,但由于6月初AMD宣布不再授权新的架构给海光,因此海光处理器的迭代将会受到很大的影响。飞腾处理器立足于ARM架构,推出了FT-1500、FT-2000、FT2000+、FT2500等一系列高性能处理器产品,联合了多家单位构建了以飞腾CPU为核心的全自主生态系统。从虚拟化支持能力及生态来说,当前飞腾处理器是首选,因此,本文将以飞腾2000+为例,探索在国产服务器飞腾2000+上虚拟化技术研究。3 基于飞腾处理器的虚拟化技术研究飞腾处理器采用ARM架构,ARM下的虚拟化主要分为CPU虚拟化、内存虚拟化、中断虚拟化、IO虚拟化、时钟虚拟化以及hy-pervisor移植几部分。3.1 CPU虚拟化ARM虚拟化的扩展与其他CPU架构非常不同。许多研究项目尝试在没有硬件虚拟化支持的情况下在ARM处理器上实现虚拟化,但是需要不同级别的半虚拟化且都不稳定。KVM针对ARM处理器虚拟化的设计能够实现其在虚拟环境中运行未经任何修改的客户操作系统(Guest OS)。为了能在ARM架构的CPU中运行hyper-visor,ARM引入了一种新的CPU模式---HYP模式。图1展示了在ARM架构中CPU的各种模式,其中有一种重要的CPU模式,叫做HYP模式。信任域将模式分为两种状态,安全态和非安全态。一个特殊的监控模式提供了两种状态之间的切换。图1 ARM CPU 模式HYP模式被作为trap和模拟需求被引入,用于在非安全态下支持虚拟化。与其他CPU模式、用户模式和内核模式相比,HYP模式具有更高的特权。在HYP模式下运行的软件可通过配置,使系统能够在触发了敏感指令或硬件中断的情况下从内核模式进入到HYP模式。为了运行虚拟机,hypervisor程序必须至少有一部分时常驻在HYP模式中。虚拟机将以用户和内核模式正常运行,直到其达到进入HYP模式的条件为止。此时,CPU将进入HYP模式,将控制权限交给hypervisor,其可管理硬件资源,并为所有的虚拟机提供所需的隔离。一旦该触发条件被hypervisor处理完毕,CPU将会切换回用户态或内核态,这样虚拟机就可以继续执行。ARM架构运行每个trap被配额制成直接切换到虚拟机的内核模式,而不是通过HYP模式来完成。这也就避免了每次系统调用或者页错误时进入到HYP模式,减少虚拟化的开销。•
103
•
ELECTRONICS WORLD・探索与观察3.2 内存虚拟化当运行一个虚拟机时,虚拟机管理的物理地址实际是中间物理地址(IPA),也被称作客户物理地址。其需要被转换成实际物理地址,即主机物理地址。类似于X86中的嵌套页表,ARM提供了第二组页表,即二级页表,其分别根据guest和host物理地址将IPA转换成PA。二级转换可以在HYP模式中被禁止或使能。二级页表使用ARM的新的LPAE页表格式,与内核模式使用的页表格式略有不同。3.3 中断虚拟化ARM定义了通用终端控制器(GIC)的架构。GIC将中断从设备转发到CPU上,CPU通过查询GIC来探测该中断的来源。GIC在多核配置中尤为重要,因为它用于生成处理器间中断(IPI)从一个CPU核到另一个CPU核。中断可被配置为使CPU核进入HYP或者内核模式。将所有中断捕获到内核模式中,并让其被在内核模式下运行的操作系统软件直接处理是很高效的,但是其不能在虚拟机上下文中工作,因为hypervisor将实现对硬件的控制,将所有中断捕获到HYP模式可确保hypervisor保留控制权,但是需要在软件中模拟虚拟中断,以便向虚拟机发出事件信号。3.4 时钟虚拟化ARM定义了通用计时器框架,其中包括对计时器虚拟化的支持。通用定时器提供了一个计数器,其可以用来测量系统运行的时间,定时器还可被编程,是其在到达一定的时间后会向CPU发出一个时钟中断。计时器可被hypervisor和guest操作系统使用,但是为了对计时器提供隔离并保留控制权,hypervisor使用的计时器不能直接被guest操作系统配置和操作。如果guest操作系统需要访问此类计时器,则需要让CPU进入到HYP模式来实现,对于某些工作负载相对频繁的操作则会产生额外的开销。hypervisor也可能希望虚拟化虚拟机的时钟,因为让虚拟机直接访问计时器硬件将是问题。ARM通过引入一个新的计数器来实现虚拟化支持。可以将hypervisor配置为使用物理计时器,而将虚拟机配置成使用虚拟计时器。这样就可以使虚拟机在不进入HYP模式的情况下访问、编程和取消虚拟计时器。从内核态访问物理计时器和计数器是由HYP模式控制的,但是在内核模式下运行的软件总是可以访问虚拟计时器和虚拟计数器。3.5 Hypervisor框架移植Hypervisor在虚拟机与主机硬件之间提供了一个抽象层,允许图2 split-mode用户为运行着的虚拟机分配的内存总值超过主机的可用内存,这种技术称为内存过量分配。为了能够降低这个技术对虚拟机性能的影响,hypervisor必须提供高效率的内存回收机制。在国产服务器上同样需要移植Hypervisor框架。Hypervisor框架移植工作主要包括核心分割虚拟化:split-mode、CPU虚拟化、内存虚拟化、中断虚拟化、IO虚拟化、时钟虚拟化。(1)split-mode。由于KVM/ARM是利用现有的内核为基础,也就意味着,在HYP模式下运行KVM/ARM,需要将Linux内核运行在HYP模式中。但由于Linux中依赖于底层架构的代码是在内核模式下工作的,并且不能在未进行任何修改的情况下在HYP模式下运行。同时,在HYP模式下运行整个内核会对本机性能产生负面影响。为解决这一问题,KVM/ARM引入了分裂模式虚拟化:将hypervisor的核心进行分割,以便它能跨不同的CPU特权模式运行,从而利用每个CPU模式体的特定优点和功能。KVM/ARM使用分裂模式来实现虚拟化,利用HYP模式启动ARM的硬件虚拟化支持,同时利用以内核模式运行的现有服务。在无需对现有代码库进行大规模修改的前提下,分裂模式虚拟化将KVM/ARM与Linux进行集成。如图2所示,其是通过将hypervisor分解为两个组件(lowvisor和highvisor)来实现的。KVM/ARM使用内存映射接口在highvisor和lowvisor之间根据需要进行共享数据。因此,highvisor显式地管理HYP模式的页表,将在HYP模式下执行的任何代码以及在highvi-sor和lowvisor之间共享的任何数据结构映射到HYP模式和内核模式相同的虚拟地址空间中。(2)CPU虚拟化。为了实现CPU的虚拟化,KVM/ARM必须向虚拟机提供一个接口,该接口本质上与底层的实际硬件CPU相同,同时确保hypervisor具有硬件的控制权。这需要确保在虚拟机(下转第107页)•
104
•
ELECTRONICS WORLD・探索与观察(1)进入装配环境,首先进行装配体组件的筛选,利用上述的装配意图识别算法得到待装配组件和装配体组件中距离最短的装配特征集之间的距离Dist。(2)如果Dist小于等于允许装配的距离,则按照建立的装配特征集和装配规则进行自动装配,接着继续执行(4);反之执行(3)。(3)如果Dist大于允许装配的距离,则设计人员根据装配体组件选择对话框选择相应的装配体装配组件,接着通过自动排序找出距离最近的装配特征集完成自动装配;如果不想选择装配体组件可以选择放弃,则不进行自动装配。配方向的自动调整然后再完成装配;反之,直接装配。重复(1)至(4)操作,直至完成所需构型的模块化机器人搭建。经过自动装配方法进行测试,可以较好地完成装配操作,其效果如图9所示。3 总结本文针对模块化机器人零件表达和装配问题,通过采用XML对零件模型进行完整表达,并利用完整表达的模块化机器人模型进行自动装配方法的研究。对完整表达的零件模型以及装配特征集进行了定义、结合Unity3D研究并实现了自动装方法的目标组件筛选,基于距离判断的装配意图识别等关键技术。最后实现了整个自动装配的流程,并通过一个实验对自动装配功能进行了测试,可以发现该方法可以很好地提高模块化机器人装配的效率。基金项目:教育部人文社会科学研究青年基金项目(18YJCZH032)。作者简介:张心印(1996—),硕士,研究方向:增强现实;碰撞检测技术研究。陈茹雯(1974—),博士,副教授,研究方向:非线性系统建图9 机器人完成装配示意图模、预报、辨识与控制、状态智能测试诊断等。高海涛(1979—),博士,副教授,研究方向:服务机器人。(4)如果两个装配特征集的方向相同,则装配时首先进行装(上接第104页)中运行的软件必须具有访问实际物理CPU上寄存器状态的能力,以及确保hypervisor及其主机内核相关联的物理硬件状态在运行的虚拟机中是持久的。不影响虚拟机的寄存器状态可通过保存虚拟机状态并在从虚拟机切换到主机时从内存中恢复主机状态来完成上下文的切换。KVM/ARM将对所有其他敏感状态的访问配置为trap到HYP模式。(3)内存虚拟化。KVM/ARM通过在虚拟机中运行时为所有内存访问使能二级地址转换来提供内存虚拟化。二级地址转换只能在HYP模式下进行配置,它的使用对虚拟机是透明的。highvisor管理二级转换页表,只允许访问专门为一个虚拟机配置的内存;其他的访问操作将导致二级页错误,该错误将被hypervisor捕获。这种机制确保一个虚拟机不能访问属于hypervisor或其他虚拟机的内存和任何敏感数据。(4)I/O虚拟化。KVM/ARM可以利用现有的QEMU和Virtio用户空间设备模拟来提供I/O虚拟化,在硬件层面,ARM架构上的所有I/O机制都是通过加载/存储操作MMIO设备区域来实现的。除了直接分配给某个虚拟机的设备外,所有其他虚拟机都无法访问MMIO区域。KVM/ARM使用二级地址转换来确保虚拟机不能直接访问物理设备。某个虚拟机访问任何不属于其的内存区域的行为都会被捕获到hypervisor,hypervisor会根据故障地址将相关信息转发到QEMU中的特定模拟设备。结束语:目前在非国产服务器上,特别是X86服务器上,服务器虚拟化技术已得到广泛应用,技术也趋于成熟。但在国产服务器上的虚拟化技术还在发展阶段,在当前自主可控要求的大环境下,对于国产服务器虚拟化的技术研究具有很大的意义。作者简介:殷虎(1974—),男,河北石家庄人,工学硕士,高级工程师,研究方向为控制与仿真。•
107
•
版权声明:本文标题:基于国产服务器的虚拟化技术研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1705272998a479289.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论