1、如何优化高性能计算如何优化高性能计算(HPC的性能如何能优化高性能计算(HPC)的性能?这个问题问的很好。从定性的层面上来说这个问题很 容易回答,答案就是更快的处理器,更多容量的内存,表现更佳的网络和磁盘输入 /输出子系统。但当你要在决定是否购买 Linu集群时这样的回答就不够准确了。 2007年6月网上技术交流会上(Webinar)所做的这个议题对于如何提高计算机性能做了详尽的论述。在此次议 题中我们会使用更多的量化指标来做讲解。 首先要论述的是对术语的定义来缩小此次议题的范围。什么是高性能计算?高性能计算简单来说就是在 16台甚至更多的服务器上完成某些类型的技术工作负载。到底这个数量是需要
2、 8台,12台还是16台服务器这并不重要。 在我们的定义下我们假设每 一台服务器都在运行自己独立的操作系统,与其关联的输入 /输出基础构造都是建立在COTS系统之上。简而言之,我们正在讨论的就是 Linux高性能计算集群。一个拥有20000台服务器的信息中心要进行分子动力学模拟无疑是毫无问题的,就好 比一个小型工程公司在它的机房里运行计算流体动力学 (CFD)模拟。解决工作负载的唯一限制来自于技术层面。接下来我们要讨论的问题是什么能直接加以应用。量度(Metrics)时至今日已经很少有人再讨论有关 Linux高性能计算集群的纯性能问题。 目前我们碰到的更多是这样的字眼:性能 (Peforman
3、ee),每瓦特性能(Peformance/Watt), 每平方英尺性能(Performance/Square foot) 和 性能 价格比(Performance/dollar) 等,对于上 文提及的 20000台服务器的动力分子簇来说, 原因是显而易见的。 运行这样的系统经常被服务器的能量消耗(瓦特)和体积(平方英尺)所局限。这两个要素都被计入总体拥有成本 (TCO)之列。在总体拥有成本(TCO)方面取得更大的经济效益是大家非常关注的。接着上面的论述,此次议题的范围我们限定在性能方面来帮助大家理解性能能耗, 性能密度和总体拥有成本(TCO)在实践中的重要性。性能的定义在这里我们把性能定义为一
4、种计算率。 例如每天完成的工作负载,每秒钟浮点运算的速度(FLOPs)等等。接下来的讨论中我们要思考的是既定工作量的完成时间。这两者是直接关 联的,速度=1/(时间/工作量)。因此性能是根据运行的工作量来进行测算的,通过计算其完 成时间来转化成所需要的速度。定量与定性在上个章节中我们提到,此次议题是如何对 Linux高性能计算集群的性能进行量化分析。 为此我们接下来要介绍部分量化模型和方法技巧, 它们能非常精确的对大家的业务决策进行指导,同时又非常简单实用。举例来说,这些业务决策涉及的方面包括:购买-系统元件选购指南来获取最佳性能或者最经济的性能配置-鉴别系统及应用软件中的瓶颈计划-突出性能的
5、关联性和局限性来制定中期商业计划原型 Linux 集群(Prototypical Linux Cluster)我们文中的Linux高性能计算集群模型包括四类主要的硬件组成部分。 (1)执行技术工作负载的计算节点或者服务器 (2) 个用于集群管理,工作控制等方面的主节点 (3)互相连接 的电缆和现在高度普及的千兆以太网 (GBE)一些全球存储系统,像由主节点输出的 NFS文件一样简单易用。下面我们通过图示 1来向大家进行详解。一个简单量化的运用模型这样一个量化的运用模型非常直观。 在一个集群上对既定的工作完成的时间大约等同于在独立的子系统上花费的时间:e(1) 时间(Time)=节点时间(Tno
6、de)+电缆时间(Tfabric)+存储时间(Tstorage)Time = Tnode + Tfabric + Tstorag这里所说的时间(Time)指的是执行工作量的完成时间,节点时间 (Tnode)是指在计算节点上花费的完成时间,电缆时间 (Tfabric)是指在互联网上各个节点进行互联的完成时间,而存储时间(Tstorage)则是指访问局域网或全球存储系统的完成时间。 As in the webinar,有关电缆时间(Tfabric)和存储时间(Tstorage)的议题我们稍后会为大家陈述。我们先来关注节 点时间(Tnode)这个关键词。计算节点的完成时间大约等同于在独立的子系统上花
7、费的时间:(2) 节点时间(Tnode)=内核时间(Tcore) +内存时间(Tmemory)这里所说的内核时间(Tcore)指的是在微处理器计算节点上的完成时间。而内存时间 (Tmemory)就是指访问主存储器的完成时间。这个模型对于单个的 CPU计算节点来说是非常实用的,而且能很容易的扩展到通用双插槽 (SMP对称多处理)计算节点。为了使第二套模型更加实用,子系统的完成时间也必须和计算节点的物理配置参数相关联, 例如处理器的速度,内存的速度等等。计算节点下面让我们来一起关注图示 2中的计算节点原型来认识相关的配置参数。图示上端的是2个处理器插槽,通过前端总线(FSB-front side
8、bus)与内存控制中心(MCH)相连。这个内 存控制中心(MCH)有四个存储信道。同时还有一个 Infiniband HCA 通过信道点对点串行(PCIe)连接在一起。南桥通道(South Bridge)相连接的。在图示 2中,大家可以看到每个主要部件旁边都用红色 标注了一个性能相关参数。这些参数详细的说明了影响性能 (并非全部)的硬件的特性。它们通常也和硬件的成本直接相关。举例来说, ,处理器时钟频率(fcore)在多数工作负荷状态下对性能影响巨大。根据供求交叉半导体产额曲线原理, 处理器速度越快,相应成本也会更高。高速缓存存储器的体积也会对性能产生影响, 它能减少主频所承载的工作负荷以提高
9、其运算速度。处理器内核的数量(Ncores)同样会影响性能和成本。内存子系统的速度可以根据双列 直插内存模块频率(fDIMM)和总线频率(fBus)进行参数化,它在工作负荷状态下也对性能产 生影响。同样,电缆相互连接 (in terco nn ect fabric)的速度取决于信道点对点串行的频率。而 其他一些因素,比如双列直插内存模块内存延迟 (DIMM CAS Late ncy),存储信道的数量等都做为次要因素暂时忽略不计。SBSATA我们能使用的性能参数在图示2中标明的6个性能参数中,我们保留四个和模型相关的参数。首先让我们先 忽略信道点对点串行的频率 (fPCIe),因为它主要影响的是
10、电缆相互连接 (interconnect fabric)速度的性能,这不在我们此次议题讨论范围之列。 接下来让我们注意一下双列直插内存模块频率(fDIMM)和总线频率(fBus)会由于内存控制中心(MCH)而限于固定比率。在目前使用的 双核系统中,这些比率最具代表性的是 4:5, 1:1,5:4。我们一般情况下只会用到其中的一个。高速缓存存储器的体积非常重要。在这个模型中我们保留这个参数。内核的数量 (Ncores)和内核频率(fcore)也非常重要,保留这两个参数。高性能计算 (HPC)模型接下来的章节我们讲解的是数学运用模型。 这但对于数学运算是个挑战,让我们一起来A普通模式是:关注这个模
11、型。这第二个模型的基本形式在计算机体系研究领域已经存在了很多年。(3)CPI = CPI0 + MPI * PPM这里的CPI指的是处理器在工作负荷状态下每执行一个指令的周期。CPI0是指内核CPI , MPI I则是指在工作负荷状态下高速缓存存储器每个指令失误的次数(注释:在咼性能计算领域,MPI主要用于信息传递界面,在此处主要是指处理器构造惯例),PPM是指以处理器时钟滴答声为单位对高速缓存存储器每个指令失误的次数的记录。第二和第三个方程式相互吻合。这第一个术语代表的是处理器,第二个术语代表的是内存。通过图示我们可以直观的看到,假设每项工作下执行的P指令的工作负荷与代表处理器的频率的内核频
12、率(每秒钟处理器运行周期的单位 )再与方程式(3)相乘,就得到了方程式(4):Tnode = (CPIo * P) * (1 / fcore) + (MPI * P) * PPM * (1 / fcore)在这里我们要注意(CPIo * P)是以每项工作分配下处理器的运行周期为单位,对微处理器架构上运行的既定工作负荷通常是个恒量。因此我们把它命名为 a。(处理器周期本身无法对时间进行测算,如果乘以内核的频率就可以得到时间的测算标准。因此 Tn ode在方程式的右边)。(MPI * P)也是同理。对于既定工作负荷和体系结构来说它也是个恒量,但它主要依赖 于高速缓存存储器的体积。我们把它命名为 M
13、(MBcache)。而PPM是指访问主存的成本。对于既定的工作负荷来说,通常是个固定的数字 C。PPM乘以内存频率和总线频率的比值(fcore / fBus)就从总线周期(bus cycles)转化成了处理器周期。因此 PM = C * fcore / fBus套入M(MBcache)就可以得到:(5)Tn ode = a* (1 / fcore) + M(MBcache) * (1 / fbus)这个例子说明总线频率(bus frequency)也是个恒量,方程式(5)可以简化为方程式(6):(6)Tnode = a * (1 / fcore) + 3在这里Tcore = a* (1 / f
14、core),而Tmemory = 3也就是公式 2里的术语。我们把这些关键点关联在一起)。首先在模型2里,公式5和公式6都有坚实的理论基础,因为我们已 经分析过它是如何从公式 3推理而来(它主要应用于计算机体系理论 )。其次,目前的这个模型4个硬件性能参数的 3个已经包括其中。还差一个参数就是内核数量 (Ncores)。我们用直观的方式来说明内核的数量,就是假设把 N个内核看做是一个网络频率上运行的一个内核,我们称之为 N*fcore。那么根据公式(6)我们大致可以推算出: Tcore a / (N*fcore)Tcore ( a/ N) * (1 / fcore )我们也可以把它写成:(8)
15、aN = ( a/ N)多核处理器的第一个字母 Alpha可能是单核处理器的1/N次。通过数学推算这几乎是完全可能的。通常情况下我们是根据系统内核和总线频率 (bus freque ncies)来衡量计算机系统性能,如公式(5)所阐述的。但是公式(5)的左边是时间单位-这个时间单位指的是一项工作量的完 成时间。这样就能更清楚的以时间为单位说明右侧的主系统参数。 同时请注意内核的时钟周期t core是指每次内核运行周期所需的时间 )也等同于(1 / fcore)。总线时钟(bus clock)周期也是同理。(9)Tn ode = aN * t core+ M(MBcache) * t Bus这个公式的转化也给了我们一个完成时间的模型,那就是 2个基本的自变量 t core和t Bus呈现出直线性变化。这对我们稍后使用一个简单的棋盘式对照表对真实系统数据进行 分析是有帮助的。这个模型是如何工作的 ?公式(9)中的这个模型好处何在呢 ?为了回答这个问题,首先让我们一起来分析两项常用 的基准测试指标,Linpack(注释:指标为实数,指 HPC采用高斯消元法求解一元 N次稠密线性代数方程组的每秒处理次数)和Stream(注释:对单环境和多重负荷时的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1