欢迎来到天天文库
浏览记录
ID:33584134
大小:154.00 KB
页数:30页
时间:2019-02-27
《linux 2.6.31内核优化指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux2.6.31内核优化指南作者:KenWuEmail:ken.wug@gmail.com转载本文档请注明原文链接 http://kenwublog.com/docs/linux-kernel-2-6-31-optimization.htm! 介绍本文档是一篇关于LinuxKernel2.6.31的最简优化指南。作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核。(非生产环境)本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸,关闭部分安全特性等方式来进行的。优化后的效果,主要体现在OS启动时间,启动后的内存占用以及
2、应用程序运行性能。由于作者水平有限,如果描述错误,还请不吝指教。 运行环境虚拟机Virtualbox3.1.4CPUCore2DuoP95002.53G 双核开启 vt-x,APIC磁盘虚拟 10G的SATA磁盘内存分了1G物理内存网卡虚拟 AMDPCNet32100M其他USB,串口,显卡,声卡全关作者是在虚拟机中编译的内核,如果你与作者的运行环境不同,则本文档中的部分描述可能会与你的实际情况有一定出入。不过,相信大部分用户在看到选项释义时,能做出适合自己的选择。 说明下列选项中,通过 "//" 注释的行,代表金国步写的内核选项简介中未提及的选项释义。通过红色 "<==="
3、注释的行,代表内核默认开启,本文档推荐关闭的选项,释义部分会给出关闭的理由。 参考资料金国步写的内核选项简介LinuxKernelDatabaseLinuxsirBBS 优化前后性能对比项目优化前优化后内核尺寸4.1M1.6M启动时间(含dhcp+默认initservice)22s14s启动后的内存占用25M22MAPPSPEC测试成绩待测待测 Generalsetup --->[]Promptfordevelopmentand/orincompletecode/drivers <=== 显示尚在开发中或尚未完成的代码和驱动. 我不是内核或驱动开发人员。() Localvers
4、ion-appendtokernelrelease[]AutomaticallyappendversioninformationtotheversionstringKernelcompressionmode(Bzip2) ---> <=== 对比默认的Gzip,Bzip2拥有更高的压缩比[*]Supportforpagingofanonymousmemory(swap)[*]SystemVIPC[*]BSDProcessAccounting[] BSDProcessAccountingversion3fileformat[]Exporttask/processstatistic
5、sthroughnetlink(EXPERIMENTAL) <=== 体验类选项一律关[]Auditingsupport <=== 给SELinux提供支持。我的使用场景主要是开发应用程序,不需要那么高的安全性,另外安全总是以牺牲性能为代价RCUSubsystem --->// 非对称读写锁系统 是一种新的kernel锁机制,适用于读多写少环境RCUImplementation(ClassicRCU) ---><=== 选择标准的RCU系统, tree-base是给拥有大规模CPU集群的SMP系统用的<>Kernel.configsupport(18)Kernellogbuff
6、ersize(16=>64KB,17=>128KB)[]ControlGroupsupport ---><===cgroups支持,文档资料,cgroups主要作用是给进程分组,并可以动态调控进程组的CPU占用率。比如A进程分到apple组,给予20%CPU占用率,E进程分easy组,给予50%CPU占用率,最高100%。我目前没有此类应用场景,用到时会选择将其编译进去。[]Kernel->userspacerelaysupport(formerlyrelayfs) <=== 在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,我目前没有此类应用场
7、景-*-Namespacessupport[] UTSnamespace <=== 我没有已安装的应用程序要用到 UTSns[] IPCnamespace <=== 我没有已安装的应用程序要用到 IPCns[]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support <=== 用于在真正内核装载前,做一些操作(俗称两阶段启动),比如加载module,mount一些非root分区,提供灾难恢复shell环境等,资料,我是期望直接从ker
此文档下载收益归作者所有