云计算 频道

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

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

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

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

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

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

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

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

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

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

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

  资源管理——虚拟化集群系统

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

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

虚拟化技术在高性能计算机中的应用研究
图2基于VM的虚拟化集群系统框架结构

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

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

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

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

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

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

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

  在构建虚拟化集群系统时,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到该计算节点,当发生更新时,可以仅传输更新部分。

0
相关文章