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公司认为,高性能计算的未来将各种异构资源集成到同一系统中。为了得到较高的应用程序处理性能,也为了满足用户的高生产率的要求,高性能计算系统必须综合利用各种类型的处理技术。
Cray采用了自适应超级计算技术把标量计算、向量计算、多线程和可重构计算技术都整合到同一个高性能计算平台上去。多种类型的处理技术共享全局寻址存储。采用符合工业标准的Linux操作系统,用户可以将整合计算平台作为单一系统来使用。通过虚拟化技术对低层进行抽象,用户可以在抽象的系统架构之上,使用标准的并行编程语言来编写应用程序。当进行程序编译时,由编译器先对代码进行分析,确定哪一种类型的计算技术最适合这段代码,然后再对这段代码进行相应地编译。程序开始执行的时候,调度软件自动将代码配置到合适的节点上运行。自适应超级计算使得系统能自动适应用户代码,而不是让程序员改变代码来适应特定系统。这就意味着能够在同一个高性能计算平台上支持更多不同领域、不同特点的高性能计算应用程序,用户不必再为了在能够某个特定系统更有效地运行而修改应用程序。
到2010年左右,Cascade系统的原型机将把各种类璎的计算技术紧密集成到单一系统中去,在每一个机柜都集成了标量、向量、多线程和硬件加速等计算技术,并提供自适应软件来使节点层的异构处理技术对用户透明。
2.2资源管理——虚拟化集群系统
在资源管理方面,Ohio State大学和IBM Watson Research Center的Huang和Abali等人提出一种虚拟化集群系统框架结构。该框架结构采用模块化方法进行设计,通过多种优化技术提高虚拟化集群系统的性能。
2.2.1虚拟化集群系统框架结构。
虚拟化集群系统框架结构主要包括了以下五个主要模块:
(1)前端:前端是用户与虚拟集群系统交互的界面,用户可以在前端节点上定制系统环境,提交批处理的作业。
(2)物理资源:物理资源是通过高速互连网络连接起来的计算节点,由虚拟机管理器进行管理。为了获得最佳性能,一个物理节点上不会运行超过其上的CPU或核数目的虚拟机,以避免频繁地切换状态所带来的性能损失。
(3)管理模块:管理模块是整个框架的核心,其主要任务是根据提交作业的要求查找和调度物理资源,实例化VM映像以满足作业运行的要求。当获得足够多可用的空闲虚拟机时,管理模块提交并执行作业。
(4)VM映像管理器:VM映像管理器管理所有的VM映像信息。这砦映像信息包含诸如VM核心版本、OS类型、特殊的库等,被保存在VM映像数据库中。VM映像管理器负责查找用户作业需要的VM环境,然后用于创建对应的VM映像。
(5)存储节点:存储节点负责存储VM映像和用户生成的各种数据。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。