专家点评

 Debian龙芯优化版修改者、维护者刘世伟

作为坚持以非盈利模式运作开发的Debian GNU/Linux,对计算机硬件体系结构的支援程度可谓极端丰富。不过,Debian开发团队是以用户群体的规模来分配资源的,这也是MIPS架构被重视程度较低的原因。就算在MIPS体系内,优化与编译也存在着一定的倾向性,用户数量越多,对版本发展的影响力就越大。所以,我认为尽快扩大用户数量是当务之急。只要龙芯有足够庞大的用户群体,相信包括Debian在内的各Linux发行版都会重视起来,对龙芯平台提供更好的支持。

Debian系统下有2万多个已经编译好的软件包可以直接在龙芯平台上安装运行,不过大部分是针对MIPS1指令集进行编译,理论上无法充分发挥龙芯处理器的性能。好在从Debian 5.0开始,系统内增加了n32与n64的运行库。虽然不是所有的软件包都能在新环境下正常运行,但可正常工作软件的数量保持了一个快速增长的趋势。也就是说,龙芯平台上软件的运行速度将普遍得到改善。

在针对龙芯的优化尚未成熟的时间里,也可以继续使用Debian提供的二进制包。尤其是面向服务的网络应用环境,针对MIPS1指令集编译的代码在测试中表现并不差。每秒最多可以完成11次Discuz!首页的访问操作,相当于每天最多90万次的动态页面处理能力。如果用eAccelerator进行加速,PHP性能还会有成倍的提高,足以胜任SMB级别的应用。

 Gentoo Linux发行版开发者、中文社区负责人张乐

做为一个从很早就开始关注龙芯并贡献龙芯的自由软件社区的参与者,能参与此次测评并受邀撰写此篇评论,甚感荣幸。

我目前有两台龙芯盒子,皆是中科龙梦公司所赠。一台2E盒子,目前运行着Gentoo中文[1];一台2F盒子,目前主要用来测试GCC 4.4每周发布一次的快照。运行的操作系统都是Gentoo Linux。

目前尚未正式发布的GCC 4.4将是首个官方正式提供龙芯支持的主流编译器。提供的支持主要包括提供了对龙芯的向量指令的支持以及这些向量指令的intrinsic,增加了龙芯所支持的MIPS4/MIPS5指令集的部分指令,还有针对龙芯的流水线模型和调度器的优化。

这些支持究竟可以带来多大的性能提升,以及不同的ABI的表现如何,都是我很感兴趣的问题。所以这次测评我也是投入了很多精力,结果也基本如事先所料,龙芯的支持在很多方面得到了正面的反映。ABI方面,在网络应用或科学计算方面,n64当是不二之选;桌面领域,o32也未尝不是一个好的选择,毕竟还有很多程序如果使用64位ABI会出现bug[2]。此次测评的遗憾在于,没有现成的使用n32的二进制Linux发行版,而且也没有足够时间去自己构建一个,而没能完成关于n32 ABI的完整测评。

值得一提的是,如果应用程序可以使用GCC提供的龙芯向量指令intrinsicGCC提供的loongson.h头文件中有定义),那么程序表现还会有更高提升。目前似乎还没有音频、视频处理库或软件增加了这方面的支持,这是以后要做的。

还有就是即使是n64/n32也还存在有一定的问题[3],所以有人提出了NUBI[4][5]。这或许是未来MIPS ABI的归宿,只是最近一两年以来社区里并没有NUBI的任何讨论,不知前景到底如何。

未来最好能有一个发行版可以提供完美的multilib支持,也就是一个系统里可以同时支持这3个ABI。CLFS已经有文章[6]可以做出这样的一个系统,不过LFS的升级是个很麻烦的问题。Gentoo曾经有人做过这方面的尝试。未来有时间我准备做一做这方面的研究,希望可以搞一个这样的系统出来。

 “憨牛”龙芯64位Linux发行版开发者、维护者孙海勇

这次测试的结果,令人感觉有点意外,但也都在情理之中。

意外的是,目前无论采用GCC龙芯优化参数针对哪种ABI进行编译,都无法为多数应用带来明显的性能提升。在某些应用领域,优化的结果甚至还不如采用标准MIPS1指令集编译后的表现。这看起来似乎有些令人沮丧,但细想想,也是情理之中的事情。目前,针对龙芯的优化工作才刚刚起步,大量的常用软件并没有进行过代码级别的优化。而编译器本身的优化能力也还比较有限,需要进一步的挖掘。

LAMP部分的测试结果令人欣慰,64位环境的整体性能略微占据了一些优势,可能更加适合在服务型平台中进行深入应用。如果将测试用例换成压力更大、更加复杂的业务模型,64位环境的优势也许更加明显。此外,64位环境在数值运算方面优势体现得比较充分,可以为科学计算等需要进行大量运算的应用程序带来明显的性能提升。

测试结果表明,我们的龙芯还有很长的路要走。怎样科学有效地利用现有优势,以及如何不断集中力量克服劣势,是今后能让龙芯走上可持续发展道路所必须深入研究探讨的问题。

这种侧重于应用方面的测试对于龙芯的发展是有积极作用的,它能让人看到现状与差距,也在一定程度上看清了努力的方向,还能为用户与开发人员提供一定的技术指导。希望这样的测试内容能够越来越丰富。


相关内容