免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 21837 | 回复: 47
打印 上一主题 下一主题

[zz]高性能Linux Kernel项目—LinuxDNA [性能真的提高 40%?] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-28 13:50 |只看该作者 |倒序浏览
http://linux.solidot.org/article ... 313201&from=rss
旨在提供高Linux kernel性能的项目LinuxDNA,本月初成功实现用Intel C/C++编译器(ICC)编译了Linux kernel 2.6.22,不仅没有编译错误,而且完全可充当一个完整Linux系统的核心,开发者使用的Linux系统是基于Gentoo Linux。早期研究发现,用ICC编译Linux内核,在性能上可以提升40%。开发者以前使用的是ICC 8,目前已换到10.1和11版本。 该项目的负责人Thaidog称:“ 编译一个新内核的所有指示都已公布在网站(虽然针对的是Gentoo,但其它任何发行版都适用)。任何有编译内核能力的人都可轻松完成。”他表示希望能维护一个与当前Linux内核并存的kernel源。现在的新内核对应的是2.6.22,因为.22版之后内核发生了一些变动,使得编译的难度加大了,但并非是不可能的。


40% 啊 看来 GCC 改进空间很大啊
的确有改进 GCC 寄存器分配这么个项目

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2009-02-28 13:55 |只看该作者
提高40%,的确很强

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2009-02-28 17:51 |只看该作者
说实在的,我并不明白他的"性能提高40%"是什么意思

论坛徽章:
0
4 [报告]
发表于 2009-02-28 21:41 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2009-02-28 22:28 |只看该作者

其实这个意义不是很大,因为你跑的 testcase 不一样得分也是不一样的。
客观的说,在 x86 上, ICC 做的很好(不过有人和 VS 比说 VS 编译出来的代码效率更高), GCC的确有很大的改进空间(每个 Arch 都是,写出来高水平的 md 不容易,我现在体会到了),有人的文章说 CSDN 上说 ICC 将会取代 GCC 我就找啊,没找到,可能么?不记得 ORC 了? FSF 不买帐谁都没辙!这个只能说 ICC 某些方面做的很好,然后 GCC 的开发人员去赶紧追赶。
不否认我也使用 OpenSolaris 去跑 SUN cc 了,可是在 OpenSolaris 上连 GCC 4 都无法编译(也许可以,太麻烦了)我就放弃了,意义不大,5 年之后 SUN cc 和 ICC 还有那个 ORC 对 GCC 还会有多少优势?10 年之后还会谁还会存在?

论坛徽章:
0
6 [报告]
发表于 2009-02-28 22:38 |只看该作者
据说使用GNU hash的工具链也能很大程度的提升性能。

论坛徽章:
0
7 [报告]
发表于 2009-03-01 20:18 |只看该作者

回复 #6 OneThird 的帖子

Ubuntu 使用了 GNU hash,别的我就不关心了。
binutils 我还是算了,仅仅可以 port 就算了,不打算深究了。

论坛徽章:
0
8 [报告]
发表于 2009-03-02 12:27 |只看该作者

回复 #5 prolj 的帖子

> 其实这个意义不是很大,因为你跑的 testcase 不一样得分也是不一样的。

对,得看什么样的benchmark

>客观的说,在 x86 上, ICC 做的很好(不过有人和 VS 比说 VS 编译出来的代码效率更高), GCC的确有很大的改进空间(每个 Arch 都是,写出来高水平的 md 不容易,我现在体会到了)

icc估计更多microarchitecture 级别的优化, 而不是通用的优化。 Intel的icc开发工程师也有很多给gcc的x86 backend提补丁的


>不否认我也使用 OpenSolaris 去跑 SUN cc 了,可是在 OpenSolaris 上连 GCC 4 都无法编译(也许可以,太麻烦了)我就放弃了,意义不大,5 年之后 SUN cc 和 ICC 还有那个 ORC 对 GCC 还会有多少优势?10 年之后还会谁还会存在?

opensolarsi上编译gcc不麻烦,我就在用gcc 4.3.1呢。 我的笔记,仅供参考:



44) 在Solaris/x86 上编译gcc
   
    (注意,只针对4.0以及更新的gcc)
           
   
    准备:
           
        -> 安装libintl, sunfreeware上有;
        -> 安装libmpfr和libgmp,用blastwave安装即可;
   
    配置:
           
        $ gtar jvxf gcc-4.3.1.tar.bz2
        $ cd gcc-4.3.1
        $ mkdir src
        $ mv * src/
        $ mkdir obj/ dst/
        $ cd obj/

        $ ../src/configure --prefix=/export/home/soft/gcc-4.3.1/dst/ --with-gnu-as \
        --with-as=/usr/sfw/bin/gas --with-ld=/usr/ccs/bin/ld --without-gnu-ld
        --enable-shared --enable-languages=c,c++ --with-gmp=/opt/csw/ --with-mpfr=/opt/csw/

        /* 你可以直接:
         *        
         *         $ gmake
         * 来编译gcc; 也可以:
         *
         *         $ make bootstrap
         * 让gcc把编译过程分成3个stage,每一个stage的结果用来编译下一个stage,这是
         * 一个bootstraping的过程。如果硬盘空间不足,还想bootstrap,那就:
         *        
         *         $ gmake bootstrap-lean
         */
        $ gmake bootstrap

/*{{{*/         如果出现错误:
                libcpp/下编译时找不到libintl_gettext等符号:
                $ cd libcpp/
                $ vi Makefile         给CFLAGS加上-L/usr/local/lib -lintl
                $ gmake

                //继续
                $ cd ..
                $ gmake

                其他目录出现这个错误也是一样的办法。
   /*}}}*/

   [FYI] Solaris上是否可以用gcc和GNU ld来编译、连接程序? gcc官方文档推荐使用SUN的link-editor,
            亦即/usr/ccs/bin/ld,而不是GNU ld。

         网上有人说,如果编译gcc时指定了--with-gnu-ld,那就可以把GNU ld的路径export到环境变量
         GCC_EXEC_PREFIX中去,gcc就可以使用GNU ld了。 (该方法尚待验证)

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2009-03-02 12:38 |只看该作者
原帖由 albcamus 于 2009-3-2 12:27 发表
> 其实这个意义不是很大,因为你跑的 testcase 不一样得分也是不一样的。

对,得看什么样的benchmark

>客观的说,在 x86 上, ICC 做的很好(不过有人和 VS 比说 VS 编译出来的代码效率更高), GCC的确有 ...

ICC是专用编译器,对于专门硬件的优化肯定是讲究的多的,专用和通用的差别还是很大的

论坛徽章:
0
10 [报告]
发表于 2009-03-02 12:42 |只看该作者
原帖由 cjaizss 于 2009-3-2 12:38 发表

ICC是专用编译器,对于专门硬件的优化肯定是讲究的多的,专用和通用的差别还是很大的



而且, icc之所以可以编译某些特定版本的kernel, 也是因为它对gcc做了选项和语法上的全面兼容。

即使这样,也不是每个kernel版本都可以用icc编译的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP