虚拟化在高性能计算机系统中的应用研究

计世网 发表于:10年04月06日 10:28 [转载] 计世网

  • 分享:
[导读]随着高性能计算机性能的提高,其规模不断扩大,各部件之间的关系日益复杂,对系统的管理和使用也变得越来越困难。为了获得较高的性能和效率,高性能计算机系统软件必须根据体系结构的特点进行定制,高性能计算应用程序也需要根据特定体系结构进行优化。
1 引言  

随着高性能计算机性能的提高,其规模不断扩大,各部件之间的关系日益复杂,对系统的管理和使用也变得越来越困难。为了获得较高的性能和效率,高性能计算机系统软件必须根据体系结构的特点进行定制,高性能计算应用程序也需要根据特定体系结构进行优化。这样不仅大大增加了系统软件和应用程序的开发时间,加大了开发难度,还降低了应用的可移植性。此外,越来越大的系统规模和越来越高的软硬件复杂性也降低了系统可靠性。特别是高性能计算机体系结构向多层次、多粒度异构化方向的发展使得上述问题变得更为突出。如何高效管理和使用高性能计算机系统,使其发挥最大效能,已成为系统软件和应用开发人员亟待解决的关键技术难题。将虚拟化技术应用于构建高性能计算机系统是解决上述问题的一个有效途径。

虚拟化技术最早出现在上世纪六、七十年代的IBM大型机系统中,用于支持高层软件共用底层硬件资源,为用户提供多个应用软件运行环境。到了八十年代,由于多任务操作系统的出现、硬件费用的降低以及个人电脑的流行,虚拟化技术逐渐淡出人们的视野。随着计算机软硬件技术的进一步发展,硬件性能得到了显著的提高,操作系统功能也越来越丰富,但系统可靠性和安全性却变得越来越差。为了提高系统可靠性,系统管理员重新采用以往一台机器运行一个应用的计算模型,但这种计算模型会导致更多的硬件成本和管理开销。而虚拟化技术正好满足了上述需求。将在多台物理机器上运行的程序放置在虚拟机(VM)上运行,可以节约硬件设备成本,提高资源利用率,降低管理的成本,通过虚拟机之间相互隔离,可以有效提高系统可靠性和安全性。目前,虚拟化技术在台式电脑和应用服务器领域已经取得了很好的应用效果,拥有如VMware workstation、Virtual PC和Xen等一批成功的虚拟化软件。硬件厂商也纷纷加入虚拟化的行列,推动虚拟化技术的发展,如Intel的VT-X、VT-i和VT-d技术,AMD 的Pacific技术等。

与在服务器领域的广泛应用相比,虚拟化技术在高性能计算领域的应用还相对较少。本文首先详细介绍目前虚拟化技术在高性能计算领域已有的几个成功应用;然后分析总结虚拟化技术应用于高性能计算机系统时所面临的主要问题;最后对虚拟化技术在高性能计算中的应用前景进行了展望。

2 虚拟化技术在高性能计算机系统中的应用研究

目前,国外一些公司和研究机构已经成功地将虚拟化技术应用到了高性能计算中,并取得了一些研究成果。这些应用包括了异构资源整合、系统容错、虚拟环境构建以及并行编程等多个方面。

2.1 整合异构资源--Cray的自适应超级计算

在异构资源整合方面,Cray公司启动了一个Cascade计划,该计划融合了虚拟化技术的思想精髓,提出自适应超级计算(Adaptive Supercomputing)的设想,目标是将现有的几种不同的超级计算技术整合到一个统一的高性能计算平台中。如图1所示。Cray公司认为,高性能计算的未来将各种异构资源集成到同一系统中。为了得到较高的应用程序处理性能,也为了满足用户的高生产率的要求,高性能计算系统必须综合利用各种类型的处理技术。

自适应超级计算

图1自适应超级计算

Cray采用了自适应超级计算技术把标量计算、向量计算、多线程和可重构计算技术都整合到同一个高性能计算平台上去。多种类型的处理技术共享全局寻址存储。采用符合工业标准的Linux操作系统,用户可以将整合计算平台作为单一系统来使用。通过虚拟化技术对低层进行抽象,用户可以在抽象的系统架构之上,使用标准的并行编程语言来编写应用程序。当进行程序编译时,由编译器先对代码进行分析,确定哪一种类型的计算技术最适合这段代码,然后再对这段代码进行相应地编译。程序开始执行的时候,调度软件自动将代码配置到合适的节点上运行。自适应超级计算使得系统能自动适应用户代码,而不是让程序员改变代码来适应特定系统。这就意味着能够在同一个高性能计算平台上支持更多不同领域、不同特点的高性能计算应用程序,用户不必再为了在能够某个特定系统更有效地运行而修改应用程序。

到2010年左右,Cascade系统的原型机将把各种类璎的计算技术紧密集成到单一系统中去,在每一个机柜都集成了标量、向量、多线程和硬件加速等计算技术,并提供自适应软件来使节点层的异构处理技术对用户透明。

2.2资源管理--虚拟化集群系统

在资源管理方面,Ohio State大学和IBM Watson Research Center的Huang和Abali等人提出一种虚拟化集群系统框架结构。该框架结构采用模块化方法进行设计,通过多种优化技术提高虚拟化集群系统的性能。

2.2.1虚拟化集群系统框架结构。

图2所示为虚拟化集群系统框架结构。

基于VM的虚拟化集群系统框架结构

图2基于VM的虚拟化集群系统框架结构

虚拟化集群系统框架结构主要包括了以下五个主要模块:

(1)前端:前端是用户与虚拟集群系统交互的界面,用户可以在前端节点上定制系统环境,提交批处理的作业。

(2)物理资源:物理资源是通过高速互连网络连接起来的计算节点,由虚拟机管理器进行管理。为了获得最佳性能,一个物理节点上不会运行超过其上的CPU或核数目的虚拟机,以避免频繁地切换状态所带来的性能损失。

(3)管理模块:管理模块是整个框架的核心,其主要任务是根据提交作业的要求查找和调度物理资源,实例化VM映像以满足作业运行的要求。当获得足够多可用的空闲虚拟机时,管理模块提交并执行作业。

(4)VM映像管理器:VM映像管理器管理所有的VM映像信息。这砦映像信息包含诸如VM核心版本、OS类型、特殊的库等,被保存在VM映像数据库中。VM映像管理器负责查找用户作业需要的VM环境,然后用于创建对应的VM映像。

(5)存储节点:存储节点负责存储VM映像和用户生成的各种数据。

2.2.2 支持集群系统虚拟化的性能优化

在构建虚拟化集群系统时,Huang等人采用了多种技术对虚拟化集群系统进行性能优化。

(1)减小虚拟化带来的额外性能开销。

虚拟化集群系统中通过以下两种技术来减小虚拟化带来的性能开销:

①VMM-bypass I/O技术:该技术允许VM通过DMA操作直接访问底层网络设备。这种访问方式只产生非常小的I/0虚拟化开销,可以使得高性能计算应用程序获得接近原始的通信性能。

②定制OS技术:支持高性能计算应用程序运行所需最少的操作系统服务。通过裁减不必要的内核模块和系统服务来定制 OS,最大限度降低系统额外开销。

(2)减小VM映像管理开销。

虚拟化集群系统通过三种方法优化VM映像开销:

①最小化VM映像:在虚拟化集群系统中,VM映像中包含了定制的OS环境,该OS环境几乎只包含了MPI函数库、必要的系统工具集以及一些运行时环境。这种定制VM映像非常小,可以在网络上高效传输,并在其它节点上快速实例化。

②快速可扩展的VM映像分布:创建一个VM映像分布模块负责将VM映像广播到各个节点,并在各节点上实例化,比如通过基于二叉树结构的广播算法将映像广播到各个目标物理节点上。这种做法可加速VIM映像的分布。

③缓存VM映像:在有足够的存储空间的前提下,可以在计算节点的本地存储器上缓存VM映像。如果VM在最后一次实例化后没有发生更新,就不需要传输新的VM到该计算节点,当发生更新时,可以仅传输更新部分。

2.3 系统容错--基于Xen的主动容错系统

随着高性能计算机系统规模的扩大,系统故障率大大增加,传统的容错技术难以满足高性能计算机可靠性的要求。针对上述问题,Nagarajan和Mueller等人在Xen的基础七实现了一种主动容错机制,允许进程自动地从失效节点迁移到健康节点。

该主动容错系统主要包括三种机制:容错机制、节点失效预测和负载平衡机制。

(1)基于Xen的容错机制。高效的容错机制必须能够在系统出错时花费最小的开销对计算任务进行重定位,使其能在不同的物理节点上运行。更重要的是,在计算任务迁移时不应该中断任务本身的执行。基于Xen半虚拟化技术,VM可以在节点出错时进行动态迁移。通过预迁移方法,可以避免中断任务运行,使VM内的所有状态预先迁移到目标VM。迁移过后,VM可以从迁移前的状态继续向下执行。

(2)基于IPMI的节点失效预测。作为主动容错系统,必须具备预测某峰未来事件的能力。通过采用智能平台管理接口(IPMI)可以实现系统系统运行状态的实时监控,预测未来的节点失效事件。当预测到某节点即将失效时,可以通知系统启动上述容错机制,主动将该节点上的VM迁移到健康节点上。

(3)基于Ganglia的负载平衡。VM迁移之前需要进行目标节点的选择。该系统中采用Ganglia监控各节点的本地资源使用状态,并将监控数据发送给其它节点,使所有节点都可以获得整个集群系统的全局状态。VM迁移时根据最新的全局状态选择目标节点。

2.4虚拟化系统环境--VSE

在构建虚拟化系统环境方面,美国橡树岭国家实验室的Engelmann C等人提出一种虚拟系统环境(Virtual Systern Environment,简称VSE)。VSE具有良好的虚拟环境隔离性,可用于为高性能计算应用程序的开发和部署提供沙盒(Sandbox)环境,也可以支持系统软件的开发和部署。

(1)VSE的系统架构。

VSE采用了系统级的虚拟机管理器(VMM)和VM配置机制,为高性能计算机系统软件和应用程序的开发和移植提供基础环境的保障。VSE的系统架构如图3所示。

VSE的系统架构

图3 VSE的系统架构

VSE的核心部分是VMM。VMM实现对物理硬件资源的抽象,支持虚拟计算节点和虚拟开发节点的部署,以及虚拟节点上操作系统的运行。VMM通过VM保护机制保证VM之间以及VM和宿主机操作系统(Host OS)之间相互隔离。

(2)VSE的管理机制。

①系统管理。VSE采用一组系统管理工具和配置文件进行系统管理。这些系统管理工具和配置文件被用于在VSE系统 E创建、部署、清除和销毁VM。

②配置管理。VSE采用层次化的VM配置描述管理机制,对操作系统配置、软件环境配置和应用程序配置进行分层描述。配置管理机制支持用户权限的设置,以保证用户环境的隔离性和安全性。

(3)VSE的应用。

①支持应用程序的开发和部署。VSE可支持高性能计算应用程序早期原型的开发。通过在台式电脑上部署VSE,可以构建与目标系统一致的小规模开发环境,开发的应用程序可直接移植目标系统上运行而不需要作任何修改。

②支持系统软件的开发和部署。VSE提供一个虚拟的测试平台,通过构建虚拟硬件设备,以VM的形式提供沙盒测试环境,使开发人员不需要卸载原有操作系统软件就可以直接进行新系统的开发和测试。这种开发方式可以保证原有系统软件和其它VM不会受到影响。

2.5并行编程环境--Charm++和AMPI

在并行编程环境方面,Illinois大学并行程序设计实验室(Parallel Programming Laboratory,简称PPL)实现了一种基于虚拟化技术的并行编程模型,它可将程序分解成大量可并行处理的部分,这些可并行处理的部分构成大量虚拟实体,每个虚拟实体对应一个虚拟处理器。该模型使程序员不需要显式地考虑物理处理器的使用,他们在编程时只需要考虑各个虚拟实体之间的交互。基于上述编程模型,Illinois大学实现了Charm++和AMPI编程语言。

(1)Charm++和AMPI。Charm++基于C++实现,其最基本的并行单元为一个C++对象,称为 chare。

chare中包含了可被其它该chare异步调用的方法。chare对象之间通过传递消息进行通信。 Charm++支持共享变量、优先级调度、chare对象组等机制。通过这些机制实现对高性能计算机体系结构的抽象,使应用程序的编写更为方便。

除了Charm++,Illnois PPL还将虚拟化技术与MPI相结合,实现了一种自适应MPI模型--AMPI。在AMPI中,应用程序由大量虚拟的MPI进程组成,这些虚拟的MPI进程独立于处理器。AMPI使用户可在更高的系统抽象层次上使用熟悉的消息编程接口来编写科学计算程序。

(2)虚拟化技术对并行编程的影响。虚拟化技术应用于高性能计算机并行编程中可以带来以下几个方面的好处:

①通过虚拟化技术可以提高编程模型的抽象层次,使用户可以更多地关注应用程序本身的逻辑而不是硬件结构的细节;

②基于消息驱动的虚拟处理器在运行时可以自动获得'消息/通信重叠的效果,如果再加上高效的预测机制,可以实现代码的运行时优化;

③虚拟处理器拥有动态迁移的能力,可以实现自适应动态负载平衡,更好地利用空闲计算资源。

 


[责任编辑:査彬]
Doserv原创 Vicky Z
纵观IT发展的历程,我们发现IT技术从最早的分布式结构走向了大集中的架构,而今,云计算的出现又将IT重新引向了分布式的老路。
官方微信
weixin
精彩专题更多
联想发布“腾云计划”正式进入云市场,同时推出ThinkServer Gen5,在众说纷“云”的云时代里联想推出云战略正当其时,服务器产品线的更新便是联想云时代里前行的新生力量。
2014年11月6号,HPC China 2014大会在广州长隆酒店正式召开。本次会议由中国计算机学会主板,中国计算机学会高性能计算专业委员会、中山大学和广东工业大学承办。
思科UCS:突破性能极限 重新定义平台
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved.