LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 6041|回复: 37

玩命式编译内核

[复制链接]
发表于 2008-11-18 21:02:05 | 显示全部楼层 |阅读模式
常言影响系统效能最大的主要是四方面:

1. kernel
2. glibc
3. Xorg 自身
4. X 的桌面环境

当中以内核最见效,可是 kernel developer 为求稳定,默认是用 -O2 来编译的,也可以选择用 -Os 来取得较少的体积,大家可有想过用 -O3 来怎样呢?

其实是可以的,不过要分两个步骤进行:

1. 按照正常方式编译及安装内核一次,把所有相关的东西(包括模组)如常安装便行

2. 清空源码树重新再来一次,但要用 -O3,必需在 make 之前修改 Makefile。可是完全用 -O3 编译是无法完成的,因为模组的建立不能继续下去
[PHP]  CC      arch/x86/boot/video.o
  CC      arch/x86/boot/video-mode.o
  CC      arch/x86/boot/version.o
  CC      arch/x86/boot/apm.o
  CC      arch/x86/boot/video-vga.o
  CC      arch/x86/boot/video-vesa.o
  CC      arch/x86/boot/video-bios.o
  LD      arch/x86/boot/setup.elf
  OBJCOPY arch/x86/boot/setup.bin
  OBJCOPY arch/x86/boot/vmlinux.bin
  HOSTCC  arch/x86/boot/tools/build
  BUILD   arch/x86/boot/bzImage
Root device is (8, 6)
Setup is 11676 bytes (padded to 11776 bytes).
System is 2302 kB
CRC 3ffd8126
Kernel: arch/x86/boot/bzImage is ready  (#1)
  Building modules, stage 2.
  MODPOST 558 modules
ERROR: "__bad_udelay" [drivers/net/tokenring/tms380tr.ko] undefined!
WARNING: modpost: Found 1 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

real    25m0.900s
user    22m28.258s
sys     1m26.889s
d00m3d@BlackMesa:~/BLFS-sources/linux-2.6.27.6$ [/PHP]
但这不要紧,因为模组在前面经已装好,最重要是这句话
  1. Kernel: arch/x86/boot/bzImage is ready  (#1)
复制代码

说明内核的映像已准备好了,那麽只要跳过 make modules_install 一步,把按手册方式把它及 System.map 再拷一次到 /boot 里便行。也就是说,系统内核是由 -O3 编译出来的,模组却是第一次正常编译由 -O2 得出来的

现在有了 kexec-tools,http://www.linuxsir.cn/bbs/thread335331.html

连重启都不用,马上可以测试新内核了。如无意外,应该一切正常"起动",模块加载也不会出问题,我不知用哪些软件做 benchmarking 好,但改用 -O3 为我带来的只有喜悦,系统突然精神数倍,反应奇佳,太棒了!

吾为求提升系统效能,不择手段,牺牲稳定性在所不计,(其实系统已运作多天也未见任何不稳定),不喜者请勿仿效!
发表于 2008-11-18 22:37:48 | 显示全部楼层
试一下 openoffice 和 mplayer 吧。
回复 支持 反对

使用道具 举报

发表于 2008-11-18 23:56:28 | 显示全部楼层
Mark一下,等我 LFS 好了再试一下.
回复 支持 反对

使用道具 举报

发表于 2008-11-25 21:13:00 | 显示全部楼层
d00m3d 斑竹您确定采用-O3能提速?

个人在您的提示下尝试清空源码树修改Makefile,将其中的-O2改为-O3
可以编译模块,没有提示错误(或许这个在28内核中改进了没出错?)

察看了bzImage体积增大了点(原先用-Os出来的是1.3M,用-O3出来的是1.7M)
可速度方面好像没什么提升

或许我感觉不对
回复 支持 反对

使用道具 举报

发表于 2008-11-25 23:45:08 | 显示全部楼层
如果真的在意性能,可以用icc(Intel® C++ Compiler) 來做lfs 或者用icc 來編譯内核來提升性能
http://www.linuxfromscratch.org/ ... ntel-c-compiler.txt
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-26 02:50:02 | 显示全部楼层
Post by RTL;1913807
如果真的在意性能,可以用icc(Intel® C++ Compiler) 來做lfs 或者用icc 來編譯内核來提升性能
http://www.linuxfromscratch.org/ ... ntel-c-compiler.txt

可是 icc 再牛都是无法将俺的 CPU 潜能尽量发挥,俺用的是 Sempron64 及 Athlon64。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-26 02:55:27 | 显示全部楼层
Post by goodstarting;1913707
d00m3d 斑竹您确定采用-O3能提速?

个人在您的提示下尝试清空源码树修改Makefile,将其中的-O2改为-O3
可以编译模块,没有提示错误(或许这个在28内核中改进了没出错?)

察看了bzImage体积增大了点(原先用-Os出来的是1.3M,用-O3出来的是1.7M)
可速度方面好像没什么提升

或许我感觉不对
没数据说话就是说不清,编译 lmbench 死活通不过,linpack 又没有 Fortran 来跑,Java 版又只有源码,系统却没有 JDK。。。唉!

最近看这个 http://www.phoronix-test-suite.com/,似乎不错。
回复 支持 反对

使用道具 举报

发表于 2008-11-26 08:30:04 | 显示全部楼层
Post by RTL;1913807
如果真的在意性能,可以用icc(Intel® C++ Compiler) 來做lfs 或者用icc 來編譯内核來提升性能
http://www.linuxfromscratch.org/ ... ntel-c-compiler.txt



看了一下,要钱的。。。
我一穷学生,400美元还是消费不起。。。
回复 支持 反对

使用道具 举报

发表于 2008-11-26 08:34:13 | 显示全部楼层
Post by d00m3d;1913848
没数据说话就是说不清,编译 lmbench 死活通不过,linpack 又没有 Fortran 来跑,Java 版又只有源码,系统却没有 JDK。。。唉!

最近看这个 http://www.phoronix-test-suite.com/,似乎不错。



d00m3d版主加油
等待您的数据
回复 支持 反对

使用道具 举报

发表于 2008-11-26 14:39:06 | 显示全部楼层
Post by d00m3d;1913847
可是 icc 再牛都是无法将俺的 CPU 潜能尽量发挥,俺用的是 Sempron64 及 Athlon64。。。。


自己写驱动程序来优化内核算了。Linux下的驱动并不很难写,不过要有硬件手册做对照:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表