【IT168 专稿】你很快再无没法免费搭乘摩尔定律这趟快车了。当务之急就是你该如何让应用程序提速?
四核处理器正迅速成为标准配件,不仅仅用于服务器,还用于移动系统和桌面系统。继去年初发布第一批基于45纳米技术的移动四核处理器后,英特尔公司已开始交付第二代四核服务器处理器,其性能比第一代四核服务器处理器提升了25%。然而,英特尔、IBM、AMD、Sun及其他厂商还只是站在起跑线上:所有这些公司都在测试或规划设计每个芯片上处理器核心多达数百颗的大规模多核处理器。这有望使超级计算机的强大功能进入到日常设备,到时就能实现科幻电影中的场景:实时高速地挖掘海量数据、全身健康扫描、让汽车和电气设备更智能化的人工智能,以及用于众多建模、可视化和物理模拟的虚拟现实。
不过,要实现这一步不会很容易。将来需要的肯定不只是掏出大笔费用,开发科幻电影中出现的新硬件。首先,统一采用新型四核技术的IT部门很有可能会发现,这种造价不菲的硬件有相当一部分处于闲置状态,因为在它们上面运行的软件不是为了利用多核而设计的。
不想在超高性能竞赛中处于下风吗?那么,现在就让你的应用程序准备好提速。
芯片设计转向多核 软件并行面临挑战
多年来,由于英特尔、AMD、Sparc和PowerPC等众多计算机芯片架构的设计人员不断推出一系列功能越来越强的芯片,每过18个月到24个月,这些芯片的密度和性能就会翻一番,于是IT部门得到了硬件性能稳步提升的好处。从上世纪80年代直到近几年前,晶体管尺寸一直在缩小,导致密度更高、时钟频率更高(从1983年的5 MHz提高至2002年的3 GHz),并且不需要改动软件,即可获得性能提升。
但英特尔的首席技术官Pat Gelsinger在2001年声称,继续沿着传统的设计道路发展会导致芯片表面温度比太阳表面温度还高,这标志着从此出现了巨大变化。芯片厂商们逐步停止竭力提高时钟频率的做法;自奔腾4时代以来,芯片厂商们已经致力于提高密度,全把目光投向了超线程和多核技术。
然而问题在于,这些新架构并没有自然带来更高的应用性能,就跟过去的情况一样。
IT部门必须采取目标清晰、前后连贯的策略以便充分利用多核性能,而这意味着需要升级应用程序,以便它们能够充分利用功能强大的硬件。你怎样才能知道贵公司的任务关键型应用程序能够充分利用多核呢?弗雷斯特研究公司的分析师James Staten说:“在新的四核处理器上测一下应用程序的性能,并且使用测量CPU利用率的小工具。如果多个处理器核心没有开始运行,你的应用程序恐怕能够得做一些改动。如果设计的应用程序已经采用了面向服务的架构(SOA)所具有的松散耦合和模块化特性,则已经为这种硬件变化的第一波浪潮做好了准备。不过对大多数企业级应用程序而言,可能需要一些改动,那样才能充分发挥多核在性能方面的潜力。”
如果贵公司内部开发的原有应用程序既不是模块化的,也不是多线程的,有几个办法可以对它们进行改装,以便充分利用多核平台的强大功能。改写这些应用程序、加入并行及/或并发设计元素是一项艰巨的任务,需要投入大量的时间和培训工作;而且,大多数IT部门本身不可能拥有足够的专长把并行分布式计算做得足够好,因而无法可靠地获得投资回报。如果你决定走这条道路,几大软件厂商倒是提供了并行计算开发工具,从英特尔的线程构建模块(Threading Building Blocks)、微软的TPL(这是.NET框架并行扩展库的一部分),到Sun的C、C++和Fortran等编译器,它们能够自动把单线程代码分割成多线程代码。
另一个办法就是,可以使用Rogue Wave Software或RapidMind等第三方厂商所提供的平台软件。这种软件可以对多个处理器/核心上的单线程应用程序进行“并行处理”,从而改动单线程应用程序。RapidMind还提供面向垂直市场的一套可定制的扩展擅,可以用来迅速构建用于多核处理器和加速器的应用程序。
Accelerated Computing Solutions公司就使用RapidMind Financial扩展库,为华尔街的各大银行和对冲基金提供高性能的计算、网格和消息传送等应用程序。这家公司的首席执行官Larry Cohen说:“考虑到华尔街最近出了那么多事,现在更加需要稳定的高性能系统,以便准确而迅速地计算风险和价格;并且面对成交量大、波动性强又不可预知的市场,立即发现机会并积极响应。有价证券和风险管理人员始终期望利用运行复杂模型和算法的创新方法,以便充分运用最新款多核处理器和硬件加速器的功能,通过运行速度更快的技术获得先行优势――这在波动性很强的时间和平常营业的时间都很重要。”
美国空军太空司令部(Air Force Space Command)采用Rogue Wave Software公司的Hydra平台,从大型机系统迁移至基于英特尔架构、运行多核处理器的集群系统。这个合并后的商业和政府小组包括国防承包商洛克希丁•马德公司和联邦政府资助的研究开发中心MITR,它不是采用新的并行计算语法从头开始做起,而是一边迁移现有的太空算法应用程序,一边利用新工具来化解多线程的复杂性,结果大幅节省了成本。
美国政府小组的一名高级成员说:“包括软硬件在内的整套解决方案其成本只有在大型机系统上运行一年所需成本的十分之一,而且旧系统很难满足工作负载的需要。”
纷纷转向多核平台的软件行业
那么,哪个行业已经在热情高涨地采用多核芯片?那就是计算机游戏开发行业。《魔兽世界》等非常先进的游戏就能利用索尼PlayStation 3游戏机中的八核STI Cell处理器、Xbox 360游戏机中的三核英特尔Xenon处理器,以及Windows PC中的双核和四核处理器。
同样,Oracle、WebLogic、DB2和Apache等各大企业级应用系统重新设计架构的风气也越来越盛,以便采用多线程,从而能充分利用主导市场的大型对等多处理服务器(SMP)。Adobe Creative Suite、Avid Media Composer和Autodesk公司的AutoCAD等高性能的媒体创作应用软件,以及其他技术财务建模和图像处理软件,同样经过了调整,以便利用这些硬件。
在桌面端,微软和苹果等厂商刚开始把多核平台上的并行处理列为一项优先工作。去年3月,微软的首席研究与策略官Craig Mundie告诉路透社,微软在准备来一次并行计算转变;他预计这次转变会与个人计算机或互联网的兴起一样重大。Mundie表示多核芯片在目前的使用只是“冰山一角”而已,他承诺:Windows Vista的后续版本Windows 7不但能利用多核(核心不超过八个)处理技术,还能利用“众核”(核心超过八个)处理技术。
苹果公司也在试水为多核处理器开发软件这个领域。Steve Jobs在去年初发布iPhone期间告诉《纽约时报》,下一代苹果操作系统的重点不是放在新功能上,而是采用被苹果冠以“Grand Central”这一代号的技术,以解决为多核处理器开发软件的问题。
Jobs说:“处理器行业会添加越来越多的核心,但没有人知道如何为这些核心开发程序。我是说,双核,开发没问题;四核,有些问题;要是八核,就别提了。”
采用多核是为业务应用程序提升潜在功能的一个方法,但这么做需要让处理器核心与操作系统和应用程序的工作负载相匹配,但说起来总比做起来容易。
艾默生网络能源公司的高级技术专家Doug Sandy说:“不是所有处理器与生俱来都是一样的。处理器在设计时考虑到了其用途;比如数字信号处理器(DSP)用于执行信号和图像处理任务,数据包处理器最适合处理网络报头、路由转发流量,等等。结论就是,面对为自己设计的应用程序,处理器才能发挥非常好的性能;面对其他应用程序,性能可能会相当差。”
惠普公司的杰出技术专家Richard Kaufmann对于Sandy担心的问题感同身受。他说:“如果你的应用程序不适合并行处理,或者用户无法得益于并行运行多个部分以提高吞吐率,你就享受不到多核处理器的任何优点。实际上,可能会发现应用程序的运行速度越来越慢。”
多核系统的非常好的应用:虚拟化
多核系统的第一个非常好的应用就是虚拟化。眼下,许多传统数据中心的服务器利用率只有5%到10%。通过使用虚拟化技术,利用率可以提升至近85%,甚至90%。这样一来,大多数IT部门可以整合一大批利用率偏低的服务器。英特尔最近开展了一项调查,旨在量化一个典型的数据中心用17台四核服务器换掉126台单核至强服务器带来的潜在优点;结果发现,四核服务器可以带来同样的性能功能,而场地少占了83%,能源成本减少了87%(大约节省了53000美元,具体取决于水电费标准),而且不到两年的时间就收回了新服务器的全部投资。
利用虚拟化技术来整合服务器还有其他许多优势,包括消除了服务器散乱问题,提高了服务器资源的利用率,提高了服务器的可用性,并且增强了灾难恢复能力;不过有必要认识到一点:虚拟化技术不是什么万灵药;在许多情况下,它并不适合。比方说,频繁使用的业务应用软件或者处理海量数据的事务密集型数据库系统就不是很适合使用虚拟化,因为如果加上虚拟化开销,它们可能提供不了让人可以接受的性能。惠普的Kaufmann说:“虚拟化技术有好多优势,比如容量规划、处理峰值负载、便于迁移等等,但你一定要确保没有为了这种灵活性而牺牲性能。”
为了缓解服务器散乱问题而值得考虑的另一个办法是,使用VMware的ThinApp 4或微软的App-V等工具,进行应用程序虚拟化。应用程序服务器在数据中心里面通常数量繁多,因为每当IT部门引入或更新某个应用程序,每个项目经理就会坚持要求安装到自己的服务器上,不仅用于业务运营,还用于开发及/或测试。要是遇到任务关键型应用程序:项目或部门主管可能不想与本公司的其他部门共享开发环境。如果把多个虚拟机放在配有大量内存和多块网卡的一台服务器上,就可以开始减少运行本地开发应用程序的设备的数量,常常采用比较老的编程方法开发的原有内部应用程序更是如此。
你可以为用于测试、开发、甚至生产的所有服务器创建虚拟实例,从而进一步减少服务器的总数。那样如果为比较旧的内部应用程序添加更模块化、更松散耦合的设计元素,以便利用较新多核处理器的强大功能,就很方便。
弗雷斯特研究公司的Staten特别提到了IBM、微软和Oracle等软件厂商当中的一大堆多核许可方案;不过他表示,微软按处理器插座数量定价的模式可能最终会胜出,因为这样容易计算费用;而且系统里面的插座数量不像核心数量那样会有显著变化。他说:“虚拟化增添了另一个难题,”因为IT部门可以利用虚拟化在一个处理器核心上构建多个虚拟服务器。最经济高效的办法往往是,洽谈面向整个企业的许可证事宜,那样不必为按核心或按处理器数量计算许可费这项复杂工作而操心。
如果IT部门正试图把一系列单核应用程序迁移至多核平台,并且设法在此过程中继续搭乘摩尔定律这趟快车,那么对它们来说有一个好消息:服务器虚拟化和整合项目提供了大幅节省成本的优点,有望使这种项目比较容易被人接受,即使当前的经济形势充满变数。