虚拟机环境中并行程序设计的性能评估 翻译论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虚拟机环境中并行程序设计的性能评估

摘要:

随着多核处理器成为主流,工程师同样对怎样才能使CPU的计算能力得到最好的利用有着很大的兴趣,例如,通过多重并行的线程,执行OpenMP的过程或者消息传递接口(MPI)。与此同时,随着服务器整合日益成熟,虚拟化技术越来越流行,HPC促使着大量的虚拟对称多处理(SMP)服务器浮现。因此,不管并行程序是否能够在虚拟机环境中有效的运行,这都是一个关注的主题。

在本论文中,我们调查了三种典型的并行程序范例的性能,其中包括OpenMP,消息传递接口(MPI)以及OpenMP和MPI的混合体,这三种范例是目前流行,开源的虚拟化系统。结果表明在虚拟化的VM上,如果在其线程和程序之间存在短暂的通信和同步,传统并行程序的性能在本身上接近非虚拟化的环境。大部分情况下,没有过多的IO访问,我们可以在一个SMP VM或者虚拟簇中获得一个理想的加速,当全部虚拟的CPU数量不大于物理的CPU的情形下这是接近于线性的。在虚拟环境中与其他两个范例的比较中,纯消息传递接口(MPI)的实现展现了其具有最好的可扩展性和稳定性。

1.引言

在计算空间,虚拟化被定义为是多个操作系统运行在一个单一的物理机器上的环境。每个操作系统都运行在自己的空间中,或者虚拟机(VM)上。这是通过在硬件和OS之间添加一个额外的软件层来实现的,被称作虚拟机监视器(VMM)。VMM调度用户对称多处理OS,管理硬件资源就和OS管理应用程序的执行大致一样。

现今,虚拟化技术如同虚拟化的管理程序,虚拟机的ESX服务器和基于内核的虚拟机(KVM)已经成为对于资源合并,降低功率的流行解决方案,同时处理丛发性的应用程序行为。Amazon易伸缩的云计算,例如,不同的用户利用虚拟化为应用程序提供资料处理中心资源(举例来说,集群或刀片式服务器),安全的为运行在潜在硬件上多样的代码提供不同种类的服务(例如:用于金融分析和预测的交易系统软件)。虚拟化同样表现出作为处理机器失败,提高应用程序可移植性和调试复杂应用程序代码的有效工具,甚至可以为HPC 建立一个虚拟簇。

随着多核处理器的流行,在业务整合和HPC簇中,并行程序设计越来越有意义。为了迎接改变的处理器结构,开发者开始修改代码结构使其可以并行执行。所以,今天,并发性已经成为虚拟机的另一个至关重要的性能指标。我们发现许多特殊的结构虚拟机(VM)不仅可以通过OpenMP或者POSIX利用线程级的并行性,同时也可以通过OpenMP或者并行虚拟机(PVM)实现内在的虚拟机并行性。我们甚至可以利用虚拟机监视器在一个多核处理器服务器上配置一个在虚拟对称处理器(SMP)簇上混合的平行程序范例(联合OpenMP和MPI)。然而,由于虚拟化性能的开销,目前只有非常少的HPC和大规模并行应用程序运行在虚拟化的环境中。本论文的目的在于评估不同并行应用程序在虚拟机环境中的性能,主要是在一个多核处理器的节点上的性能,而不是在HPC簇上的性能。换句话说,我希望发现虚拟机在多核平台上并行程序设计的开销。例如,通常在虚拟系统中的虚拟CPU数量大于物理CPU的数量,虚拟机管理器程序(VMM)上的调度模式在一种分时方式上映射虚拟机的vCPU到pCPU。当在虚拟机中工作是并行的应用程序,比如多线程程序,拥有同步性操作的并行程序或更多的通信。这些现存的vCPU调度模式或许会恶化性能。论文致力于在并行程序设计性能上的实验性研究以及能够更好的理解资源共享的效果。特别地,对于一个运行

在多核平台上的一个或多个虚拟机,我们评估了三个主流并行程序设计范例的性能。更精确的阐述就是使用一个标准的基于86方阵核心计算机和虚拟化管理程序,我们分别评估了OpenMP,MPI和混合范例的效能。目的是为了理解在虚拟多核平台上多样虚拟机的性能影响和所需的功耗;探索在虚拟机环境不同并行程序范例的性能影响。

论文剩下部分的组织结构如下。在第二部分我们阐述了虚拟机管理程序的框架并且分析了其对于并行编程的问题。在第三部分我们描述了我们的测试环境和方法。第四部分讨论了依据不同标准的实验结构总结。第五部分涉及了相关工作。最后,在第六部分我们进行了总结和归纳。

2. 在虚拟机上的问题和分析

在此章节中,我们首先描述了普通的虚拟机管理程序的虚拟机结构,然后给出了一个典型的vCPU调度方案来描述vCPU对于在虚拟机上并行编程的调度问题。

2.1 虚拟机监视器的综述

虚拟化是最初在剑桥大学发展的一个流行的高性能虚拟机管理程序。它使用的是半虚拟化(利用硬件虚拟化支持HVM如Intel-VT或者AMD-V),这需要主操作系统可以明确地传输信息到虚拟机结构,但是这带来了更高的性能。然而,虚拟化没有要求应用程序二进制接口的变化(ABI),所以存在用户应用程序可以不需要修改的运行。

图 1.虚拟机管理程序的结构,管理了三个虚拟Linux操作系统

图一阐明了虚拟机的结构。虚拟机管理程序(WMM)在最底层可以直接访问硬件。管理程序运行在最高处理层。在管理程序至上是虚拟机区域(VM)。客户的操作系统则运行在客户区域(使用者区域)以阻止直接执行高等级的处理指令。一个特殊的区域被称作为区域零(或者Dom0),在开机时间被创建,是被用来访问由管理程序提供的控制接口,同时执行任务的创建,终端和通过接口来变动其他客户的区域。

在虚拟机中,区域之间是通过页面共享和时间管道来通信的,这为区域间提供了一个异步通信途径。在事件管道一边的一个发送操作将会引发目的区域的一个接收事件,这会产生一个终端。如果一个区域想要发送数据到另一个区域时,为源区域的典型计划将被授权访问本地存储页面到目的区域并且发送一个通知事件。然后这些共享页面将会传送数据。

由于虚拟机的特殊I/O机制,作为在虚拟机中全部通信的增长,区域零的负担也是越来越重。这也是并行程序的一个主要瓶颈,尤其是对于对通信很敏感的程序。

2.2 并行程序的问题方案

在对称多处理器的虚拟机中拥有四个进程,一个进程的多线程程序各自的运行,单位时间的CPU调度是一个插槽。虚拟机的权重是3/10,在线程每一个阶段结束期间存在一个同步的操作,阶段的长度等同于插槽的长度。这个方案可以从多线程程序和并行程序中被抽象。

相关文档
最新文档