【IT168 专稿】Brian Dykstra是美国哥伦比亚一家做数字法医的公司的合伙人,他最近购买了一台基于四核处理器的服务器,想把公司的IT能力提升上去;毕竟,他想,更多的CPU内核意味着有一台性能更强大的计算机,可以比单核系统完成更多的工作。
然而,在付钱购买了这台四核服务器之后,Dykstra却发现,有三个内核都一直处于空闲状态,根本没有用起来,因为他用的软件不是针对多核平台开发的。
Dykstra不是唯一对多核系统感到失望的IT人员。随着芯片厂商在一颗处理器中增加越来越多的内核,大多数软件却都还没有跟上来,使得很多应用无法利用硬件性能大幅提升所带来的好处。而为了让用户能够切实体会到这些性能提升,软件必须针对多核系统进行设计,以让不同的处理器内核可以同时执行不同的计算任务。
Dykstra表示,虽然一些大型服务器软件厂商象微软和Oracle已经做到了部分软件的多线程化,但市场上大部分软件仍然是单线程的。当Dykstra 确定了哪些软件对他的公司影响最大之后,他列出了一张厂商名单,拿起电话,开始挨个和他们理论起来,希望他们增加对多核芯片的支持。
虚拟化弥补多核软件的缺失
不过,虚拟化的流行为多核系统应用找到了新的出路,短期来看甚至弥补了多核软件缺失的不足。一些IT管理人员在使用“多核+虚拟化”的方案之后,也确实减少了成本和硬件需求。比如,当一家公司开始在多核系统上部署虚拟化,每个内核可以分配到它自己的虚拟机,这样每个内核就可以运行独立的应用了。
Bruce McMillan是美国乔治亚州Solvay 医药公司的一位技术经理,他在多核系统上部署虚拟化的项目就运转得非常不错。目前,他已经把虚拟机的数量增加了50%,同时把他的数据中心里面的物理服务器数量减少了差不多一半。
McMillan说,他过去在8台基于单核处理器的服务器上跑了100个虚拟机。一年前他又加了台双核的服务器,并把虚拟机的数量增加到了150个。大约一个月前,公司又购进了一台四核服务器,淘汰掉了3台单核的服务器。公司现在正打算再买进两台四核服务器,这样就可以把其他5台老旧的单核服务器一并替换掉。
“仅仅在硬件成本上,到现在为止就让我省了50万美元,”McMillan说,“我还可以比以前做到更高的整合比率,这就是服务器整合的好处。”
McMillan表示他也正在寻求多线程化的软件,但就目前而言,他还是比较满意的,因为多核和虚拟化技术让他用更少的硬件做了更多的工作。
“这真的是一种全新的可扩展系统,”他说,“它让我们真真正正地减少了数据中心里的空间占用,减少了我们的散热成本,而且没有以前那么多服务器需要管理,维护费用也更便宜。因为我们的机器少了,需要的网络接口也减少了。”
每两年处理器内核数增加一倍
实际上,多线程软件的缺乏虽然给一些用户带来了不便,但并没有减缓芯片厂商开发多核芯片的热情和速度。
就在9月下旬,英特尔公司发布了全新的至强7400系列服务器处理器,采用了六核技术,标志着半导体产业达到了一个新的高峰。
而英特尔下一代芯片的八核芯版本的Nehalem,也预计在2009年投产。Nehalem芯片家族的第一款产品将是四核服务器处理器,预计在今年四季度发货。
同时,另一家芯片厂商AMD虽然落后于英特尔,目前还只提供四核芯片,但根据它最新的产品路线图,AMD计划在2009年下半年推出它的6核心Istanbul 服务器处理器,到2010年的上半年再推出12核心的服务器处理器。
IBM也在用8核心的CELL芯片开发它的超级计算机。这款芯片是由IBM和SONY、东芝共同开发设计的,起初主要用来满足Sony PlayStation 3视频游戏系统所需要的大规模运算。
英特尔在2007年早些时候还展示了80核心处理器的原型。虽然英特尔还没有公开宣布什么时候推出这款处理器,但分析师们都认为,对80核芯片的研究是对未来世界的一种预示——而且是不那么遥远的未来。
Jim McGregor是In-Stat 的一名分析师,他表示,“现在大家都能看到,我们已经走在多核的道路上——从四核到8核、12核,这是技术演化和发展的必然。” 他预期在1年半到两年之内,16核的芯片就会出现在市场上。“芯片产业正在接近这样一个规律,就是每两年,处理器上的内核数量会增加一倍。”
多线程软件开发人才奇缺是关键
今天,在软件问题还没有得到解决之前,IT人员需要做的就是去测试和了解处理器内核增多或翻番对自己的应用到底有多大帮助。
还是问问Dykstra吧!
“当你买了一台四核服务器回来却发现只有一颗内核在跑,这真的让人很失望,”Dykstra评价说,“花了那么多额外的钱,你却并不能让系统跑得更快一些。”
在今天大多数情况下,四核中只有一颗内核在运行软件,“就算它做到最大的利用率,而其他三个内核只是呆在那,什么事也不做,”Dykstra不满地说到。因此,大多数时候,“你的CPU的实际使用率只有25%。如果能把所有的核心都利用起来,就能把性能再提升75%。”
“这对我们来说,就意味着可以处理更多的数据,可以以更快的速度把结果交给客户,这也意味着能赚更多的钱。”他补充说,“这就是我们为什么要去找厂商理论,督促他们做得更好一些。”
但分析师们认为,软件多线程化发展所需要的时间,很可能比许多IT管理人员所希望的要长得多,因为这里面有一些非常基础性的问题需要解决。
首先最重要的是,开发多线程软件的成本非常高。而且这也是一项非常艰巨的工作,特别是对于许多只学过单线程软件编程的开发人员而言,这么多年来,他们只会干这个。
Rob Enderle是美国圣何塞市Enderle集团的一名分析师,他认为,“我们在开发人员方面面临的问题非常严峻,大家不知道怎么去为多核系统开发软件。”
“单线程软件使用了这么多年,这种环境下以至于开发人员都没有发展多线程开发的技能。要把一个应用按不同任务拆分开,让它们各自去运算,最后还要把它们完美地整合在一起,这确实很难。”Enderle补充道。
微软公司在一项声明中也曾表示,现在缺少构建多线程软件的开发工具。
Margaret Lewis是AMD公司的商业解决方案主管,他预测未来5年之内,软件公司会在编写多线程代码方面取得重大的进步。
但是,即便当软件厂商开始提供多线程软件,对于许多大企业来说,也可能帮不到什么忙。因为这些大企业用的软件更老旧,而且是自己内部开发的,没法轻易就把它们替换掉。实际上,对于这类企业而言,只能花费大力气去重新编写软件或者花大代价换成其他软件,才能利用到多核处理器的好处。
此外,今天这样一种多变的经济环境也不利于多线程软件的开发,因为企业用户在部署新技术时必须确保足够的投入产出比,成本控制对很多公司来说都变得很关键,如果代价太高,他们很可能就不会去做这事了。