内核编译选项

来源:互联网 发布:网络ping值不稳定 编辑:程序博客网 时间:2024/06/08 08:48

--> http://www.paeonia.me/Blog/

--> http://kenwublog.com/docs/linux-kernel-2-6-36-optimization.htm

--> http://jishuziyuan.com/archive/pkgefs/8471574.html

1.块设备:

From:http://www.paeonia.me/Blog/2013/01/14/enable-the-block-layer/

-*- Enable the block layer —>
提供块设备的支持。(能不选吗)
[ ] Block layer SG support v4
提供SCSI接口支持,好像没必要选吧,但是帮助中提示不确定就选。我还是不选了。
[ ] Block layer SG support v4 helper lib
用户是用不到的,子系统要用的话自己会开的。不确定不选。
[ ] Block layer data integrity support
用于数据完整性支持。别高兴太早了,前提是你的存储设备是提供T10/SCSI完整域(??不会翻)或者是T13/ATA外部路径保护(不清楚诶)。不确定的话不选。
Partition Types —>
[ ] Advanced partition selection
高级磁盘分区类型,不确定全不选。(该选项的目的是使用硬盘上其他Linux产生的不同架构的分区,我的理解)
IO Schedulers —>
I/O调度,传说不同的进程会用不同的调度算法。
<*> Deadline I/O scheduler
将FIFO转换成CSCAN。还是CSCAN蛮公平的,选。
<*> CFQ I/O scheduler
CFQ 尽可能使所有进程之间的带宽平衡,适用于服务器和普通PC。
Default I/O scheduler (CFQ) —>
这里还是蛮纠结的,不知道选什么,默认吧。

从这里还是看出存储设备更新还是挺快的。以前的块设备选项是有“支持2T”这一项,现在看来是默认了。

另一种解释: From:http://hi.baidu.com/419836321/item/d8b25ad9e6fe38ef54347fd8

-*- Enable the block layer --->
块设备支持,使用硬盘/USB/SCSI设备者必选这选项使得块设备可以从内核移除。如果不选,那么 blockdev 文件将不可用,一些文件系统比如 ext3 将不可用。这个选项会禁止 SCSI 字符设备和 USB 储存设备,如果它们使用不同的块设备。选Y,除非你知道你不需要挂载硬盘和其他类似的设备。不过此项无可选项

  • [*]   Support for large (2TB+) block devices and files    
    仅在使用大于2TB的块设备时需要
  • [*]   Block layer SG support v4
    通用scsi块设备第4版支持
  • [ ]   Block layer data integrity support
    块设备数据完整性支持
  • IO Schedulers --->
    IO调度器I/O是输入输出带宽控制,主要针对硬盘,是核心的必須的东西。这里提供了三个IO调度器。
    • <*> Anticipatory I/O scheduler 
      使用于大多数环境假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)抢先式 I/O 调度方式是默认的磁盘调度方式。它对于大多数环境通常是比较好的选择。但是它和Deadline I/O 调度器相比有点大和复杂,它有时在数据调入时会比较慢。
    • <*> Deadline I/O scheduler
      使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)Deadline I/O调度器简单而又紧密,在性能上和抢先式调度器不相上下,在一些数据调入时工作得更好。至于在单进程I/O磁盘调度上,它的工作方式几乎和抢先式调度器相同,因此也是一个好的选择。
    • <*> CFQ I/O scheduler
      使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统CFQ调度器尝试为所有进程提供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。
    • Default I/O scheduler (CFQ) --->
      默认IO调度器我这样理解上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。期限式则是:所有的工作都有最终期限,在这之前必须完成。当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。
      • ( ) Anticipatory
      • ( ) Deadline
      • (X) CFQ
      • ( ) No-op
2.Enable loadable module support 

Posted on 2013-01-14 From:http://www.paeonia.me/Blog/2013/01/14/enable-loadable-module-support/


[*] Enable loadable module support —>
支持模块的加载。Linux将内核不经常使用的代码变成模块,在需要的时候加载,这样可以进一步减小内核体积。
[ ] Forced module loading
加载模块时无需版本信息(modprobe –force) (really a bad idea)
[*] Module unloading
允许卸载已加载的模块
[ ] Module versioning support
使用其他Kernel版本的模块,可能和你的内核不兼容。不确定的话就不选。
[ ] Source checksum for all modules
内核维护人员使用,为所有模块所用的文件提供校验码。(因为有人会修改了模块而忘了更新版本) 不确定的话不选