服务器在线3月23日报道 华尔街对高性能,低延迟应用软件的需求看似永无止境。芯片制造商也在不遗余力的为金融服务企业提供着尽可能多的计算能力。
举例来说,AMD公司计划于2009年下半年推出他们的首款6核服务器处理器,代码为"伊斯坦布尔"("Istanbul")。而已经推出6核处理器的英特尔公司则计划在今年底推出8核Nehalem EX服务器芯片。据报道,从24核到100核的处理器目前都已经列入芯片制造商的未来规划之中。
但问题是尽管各大厂商纷纷推出最新服务器,包括目前的四核服务器,那些遗留下来的单线程应用软件性能都没有得到改进–除非他们也相应的做出调整。幸运的是,芯片制造商,栅格,虚拟化和多线程软件厂商都在致力于研发解决这个问题的方案。包括经纪公司AVM在内的华尔街企业已经开始进行这方面的尝试。
问题所在
过时的单线程应用软件最初的设计是在一个处理器上完成所有的工作负载。当单线程应用软件在四核服务器上运行时,程序也只能利用一个处理器,即使它所承载的任务非常繁重,其他三个核心也只能处于闲置状态。如果两款应用软件在同一个芯片的两个处理器上运行,共享芯片内存和其他资源,瓶颈问题就因此产生。
观察家表示,在未来三年内计算能力更加强大的多核服务器将不可避免的成为每个华尔街数据中心的主角。据专家分析,如果应用软件设计合理,在8核芯片上运行的应用软件性能将是在单核芯片上运行的应用软件性能的8倍。这种类型的性能将成为专门的硬件加速器最大的竞争对手,诸如图形处理单元和现场可编程门阵列,华尔街就是使用这些加速器来满足高速,低延迟的交易需求。
编译在多重处理器上运行的应用程序代码所面临的挑战并不新鲜,因为多重中央处理器服务器已经存在了很多年了。将工作负载在多重中央处理器内进行分配所面临的设计难点与在多重处理器内进行分配是类似的。但是由于华尔街仍然在使用这些过时的应用程序,而多线程应用软件研发人才又十分缺乏(换句话说就是能研发与多核同步发展的应用程序人才十分稀缺),因此这个挑战一直在困扰着软件行业。
另外,重新编写应用程序也同样存在挑战。原因之一是过时的编程语言已经不适用于多线程应用软件。芝加哥的市场数据解决方案提供商Activ Financial的首席执行官迈克.邓恩解释说"C 和C++语言都是比较古老的编程语言,已经无法跟上时代的发展。使用Java或者C#语言编程的研发人员在编程语言本地同步上具有优势"。另一个挑战是如果研发人员不够认真,不同线程就会相互干扰,比如说争夺同样的内存资源等。
不过邓恩也表示,对于所有面临的挑战,多线程的设计原理是非常直接的。"我们解决的方式就是考虑区分和克服–将问题划分为几个部分,让线程在每部分上工作。你应该如何分解程序是计算机编程的艺术所在"。
某些华尔街应用软件是"令人为难的并行程序"–换句话说,他们很容易被定位为多线程环境。蒙地卡罗模拟和选择定价引擎就是运行成百上千次的程序,它的工作负载能轻松实现的在处理器之间进行分配。
对于那些缺乏研发能力的人或者不希望他们的研发人员在并行应用软件研发上花费时间的用户来说,包括RapidMind和Simtone在内的几家软件厂商都能提供将现有单线程应用程序在多核处理器上并行运行的产品。
包装和改编
对于重新编写多线程应用软件代码这项耗时的任务来说,一个选择就是利用中间过渡层,诸如在遗留应用软件和新处理器之间安装栅格或者虚拟化软件。有时这种方法被称之为"包装和改编"("wrap and adapt")。
位于美国佛罗里达的AVM公司首席技术官Paul Algreen认为"我们在这方面有两个问题。第一个问题是我们即有过时的遗留C和C++应用软件,也有最新的.NET应用软件。我们也希望能让更多的计算任务混合完成,但由于没有足够的时间而无法实现"。
根据Algreen的介绍,他考虑针对多线程应用程序重新设计应用软件,购买新的硬件设备和利用目前闲置的现有硬件。Algreen强调说"我们对所有这些选择进行了评估,包括评估栅格厂商,虚拟化项目和软件重新编写的计划都在评估之列"。
Algreen还强调说,重新编译应用程序被认为是一项耗时费钱的工程。"寻找能利用你的计算能力的高质量编程人员是耗资巨大的",尽管AVM公司目前有两名在高效多线程应用编程代码优化方面经验丰富的研发人员,但是Algreen表示"这两名专业人员太有价值了,他们不能去做那种类型的编程工作。我宁愿让他们去承担数量库和编程建模的任务"。
但不幸的是,Algreen也承认AVM考虑的解决方案没有一种能满足所有成本节约所需的技术要求。Algreen表示"我们感觉许多能应对这类问题的产品至少要花费15万美元到30万美元的初期投入。对于我们要实现的目标,这种基建投资显得毫无意义"。
AVM公司从2006年8月到12月对产品实施初期评估后,又考虑了栅格解决方案和软件重新编程方法,1年后公司选择了位于加利福尼亚州奥克兰市的Digipede公司的栅格软件。
初期的整合花费了一个月时间。第一阶段–栅格所有权评估和5年前的风险建模库被迁移到.NET平台上(方便管理和Excel整合)耗时3个月时间,4月中旬进行了包装。根据Algreen的介绍,涉及Digipede栅格的其他项目还需要更多的整合和努力(比如说某些C,C++和C#编程代码要根据栅格软件需求进行修改)。
价值评估和风险流程的栅格化只是简单增加一列代码的问题,新的栅格很快能开始工作和承担几个桌面系统,服务器和虚拟机之间的工作负载。2007年1月Digipede在AVM开始使用。
Algreen表示"作为一项固定收益的投资,我们整天都在进行各项风险的评估。根据设备的复杂性不同,整个流程需要消耗不少时间。当你要进行大量的风险评估,你就必须在一台设备上花费时间连续进行检测。通过使用Digipede,我们能将以前几个小时的评估周期缩短为几分钟完成"。Algreen还补充说,公司员工会对应用软件在栅格上运行感兴趣,因为这很容易做到。
栅格上的电子表格
易于使用的特性让AVM公司使用Digipede对Excel电子表格进行了栅格化。Algreen解释说"如果有分析师需要预定CDO或者预定文件夹,他可以在Excel上进行定义,然后在自己的桌面系统上正常本地运行。如今分析师可以在栅格上运行这些电子表格。通过栅格化电子表格,我们可以帮助分析师来实现实时分析"。
在这些场景背后,研发人员必须对并行操作的对象类型进行验证。在这里Digipede扮演的是工作负载管理器的角色,将计算结果并行发送给无数计算节点,这种计算方式的速度比在单台设备上运行要快上无数倍。软件能从所有的设备上收集信息,然后将他们返回给Excel电子表格。
Algreen表示"我们有一个3000子文件夹组成的文件包,我希望能在栅格的30个节点上运行市场分析"。每个节点可以创建一项任务,每个任务处理100个项计算。Algreen还解释说,Digipede不仅能管理工作负载的分配,而且能通过应用软件来汇报使用情况,这样IT部门能精确的计算出使用成本。
根据Algreen的介绍,今年AVM公司计划继续向栅格增加资金投入。他们还会将使用栅格作为公司实现实时数据分析的最佳方法。Algreen认为"如果有30名分析师或者交易人员要使用指定文件夹,或者如果他们同时按下Shift-F9来重新计算分析结果,他们可能都会得到不同的答案"。Algreen认为,将所有的实时数据分析放在栅格上能得到更快,更一致的结果。
虚拟化选择
像栅格计算软件一样,虚拟化软件也扮演着遗留应用软件与新款服务器之前桥梁的角色。与被迫采用并行计算的方式不同的是,现有的应用软件在虚拟机或者管理程序上运行,将工作负载分配到多核上。J.P. Morgan Chase就是实施这种选择的金融服务企业。
AMD公司东区企业研发部门高级经理迈克.罗斯坦强调说"我与纽约市的所有主要金融服务企业进行过交流,我发现多数企业都没有相应的资源来重新编译单线程应用软件来适合多核环境。我还发现多数企业在单台服务器上运行的应用软件,中央处理器的使用率几乎都没有超过20%,如果使用诸如VMware这样的虚拟化管理程序将应用软件在四核服务器上运行,用这种方式来利用服务器整合实现的效用。这种方式与重新编写应用程序相比,是更加快速和简单的解决方案。
罗斯坦认为部署虚拟化的金融企业典型的做法时每个应用程序分配一个核心,这样一台四路四核服务器就能运行16种应用软件(而在过去他们可能需要分别在16台服务器上运行)。
依靠虚拟化的不利因素是需要跨越过时软件与新服务器之间的差距,特别是对于那些有高性能需求的应用软件:管理程序会在应用软件顶部增加一个管理层,导致系统反应更加迟缓。罗斯坦也承认这一点。他表示"有一些应用软件时用户喜欢在本地环境中使用的。但是虚拟化性能的持续提升,越来越多最初由管理程序完成的任务目前都可以由处理器来完成,因此速度就更快了"。
根据罗斯坦的说法,AMD公司在他们处理器上提供了优化虚拟化的特性,诸如快速虚拟化索引(Rapid Virtualization Indexing)就是一种在硅晶片上映射内存的方式(不是在管理程序上)。AMD公司计划在2009年中期推出全新的Fiorano平台,包括称之为I/O内存管理单元的虚拟化性能特性,这种特性能帮助用户将虚拟机捆绑到专门的输入/输出设备上,而这种功能以前是在管理程序中实现的。
英特尔的行动
英特尔公司也采取了一系列行动,包括帮助研发人员应对多核芯片而设计的产品和项目。英特尔公司软件研发工具部门的首席设计师詹姆斯.兰德称"随着我们推出新的技术,我们面临的挑战是确认这是能获得行业青睐的好办法"。
举例来说,英特尔公司建立了一个名为Threaded Building Blocks的开源C++模板库,这个模板库能简化并行应用程序的研发过程。兰德撰写了一本介绍TBB的专业书,在书中他介绍说"在世界上广泛应用的C++编程语言不是为并行计算设计的,我们就是要为研发人员提供尽可能的帮助,让C++成为编写并行应用程序的好方法"
英特尔公司一款名为Parallel Studio的产品(目前仍然处于测试阶段)可以为研发人员使用C和C++编程语言编写并行应用程序提供编译器,语言库和分析公司。兰德表示已经有数千人下载了这款产品。
兰德表示"并行应用软件存在一些串行程序中没有的漏洞–因此编译并行应用软件比过去的编程更加困难,但是他们是有所不同的"。兰德补充说Parallel Studio的设计意图就是帮助研发人员来解决这些问题。"这些工作不是自动完成的;你必须了解和考虑并行计算,你必须明白如何去做。你必须用不同的思维方式去考虑如何组织这项工作"。
但是随着多核中央处理器开始占据华尔街的桌面系统和数据中心,这种新的思维方式就成为必要条件。事实上,新的多线程编程语言,诸如Erlang已经开始成型来迎合未来的应用软件研发。