创建/proc//cpuset文件
[]Simple CPU accounting cgroup subsystem
简单CPU统计组控制子系统,一个简单的资源控制器。
[] Resource counters
这个选项开启独立的资源计数器构架,它与组控制系统共同工作。
[ ] Memory Resource Controller for Control Groups (NEW)
控制组的内存资源控制器
提供一个内存资源控制器,以管理随机内存和页面缓存。
[ ] Enable perf_event per-cpu per-container group (cgroup) moni
[] Group CPU scheduler --->
CPU组调度器
可为进程赋予不同于nice level的调度优先级。尤其在企业级硬件系统上,可以进一步优化实时任务的调度。桌面用户可以不选
--- Group CPU scheduler
[] Group scheduling for SCHED_OTHER (NEW)
SCHED_OTHER组调度。
SCHED:Process Scheduler,负责控制进程对CPU的使用.调度算法的公平,有效,硬件有关事件的及时处理.
[ ] CPU bandwidth provisioning for FAIR_GROUP_SCHED (NEW)
[ ] Group scheduling for SCHED_RR/FIFO (NEW)
SCHED_RR/FIFO组调度
<>Block IO controller (NEW)
[*] Checkpoint/restore support
命名空间组控制子系统
提供一个简单的命名空间组控制子系统,以提供分层次的设置命名,用于虚拟服务器实例和检查点/重启任务。
-*- Namespaces support
--- Namespaces support
[] UTS namespace
通用终端系统的命名空间
允许使用容器,如Vservers利用UTS命名空间来为不同的服务器提供不同的UTS。
在此命名空间中,任务通过uname()系统调用来查看不同的信息。
[] IPC namespace
在这个命名空间,任务用IPC id来工作。IPC id通过不同命名空间的不同IPC对象来进行通信。
[] User namespace (EXPERIMENTAL)
此命名空间允许使用容器(如vservers),使用用户命名空间来为不同服务器提供不同的用户信息。可选N。
[] PID Namespaces
支持进程id命名空间。这允许多进程拥有相同的pid,只要它们位于不同的pid命名空间。这是一个容器的编译块。若不清楚,推荐N。
[] Network namespace
[ ] Automatic process group scheduling (NEW)
[ ] Enable deprecated sysfs features to support old userspace too
[] Enable deprecated sysfs features by default
-*- Kernel->user space relay support (formerly relayfs)
在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,我目前没有此类应用场景。
[] Initial RAM filesystem and RAM disk (initramfs/initrd) support
初始RAM的文件和RAM磁盘( initramfs /initrd)支持
用于在真正内核装载前,做一些操作(俗称两阶段启动),比如加载module,mount一些非root 分区,提供灾难恢复shell 环境等。
RAM文件系统被启动器装载(比如lilo),在通常的启动程序前以root形式挂载。通常用来装载模块,在挂载真正的root文件系统时使用。如果RAM磁盘支持也被选入,这将允许初始RAM磁盘支持(initrd)。
采用initrd启动则要选择,否则可以不选.
使内核增大15kb(在一些体系上,可能会更大)。若不清楚,可选N
( ) Initramfs source file(s) (NEW)
初始ram文件系统
这里可以是一个单独的cpio压缩包,有.cpio的后缀。或者是一个目录和文件的列表,用来编译初始ram文件系统镜像。.cpio压缩包应该包含ram文件系统镜像所需的文件系统包。目录列表应该包含所有文件的层次,文件列表应该包含usr/gen_init_cpio中提到的内容。当多重的目录和文件确定时,初始ram文件系统镜像将把它们聚合起来。若不清楚,可选N
[] Support initial ramdisks compressed using gzip (NEW)
[] Support initial ramdisks compressed using bzip2
[] Support initial ramdisks compressed using LZMA
[] Support initial ramdisks compressed using XZ
[] Support initial ramdisks compressed using LZO
[ ] Optimize for size (NEW)
内核大小优化
将在GCC命令后用-Os代替-O2参数,可以得到更小的内核。有时会产生错误的二进制代码。
[ ] Configure standard kernel features (for small systems) --->
配置标准的内核特性(针对小型系统)
这个选项可以让内核的基本选项和设置无效或者扭曲。
用于特定的“非标准”环境(小型系统、引导盘)中的。
其本质为启用该选项可以选择更多选项。
若不清楚,推荐N
--- Configure standard kernel features (expert users)
-*- Load all symbols for debugging/ksymoops
在这选Y可以让内核打印所有的崩溃信息标记和栈回溯信息。这里会增大内核的一些尺寸,因为所有的标记都被编译进了内核镜像。
[ ] Include all symbols in kallsyms (NEW)
装载所有的调试符号表信息
在kallsyms中包含内核知道的所有符号,内核将会增大300K。
[] Enable full-sized data structures for core (NEW)
在内核中使用全尺寸的数据结构
禁用将使得某些内核的数据结构减小以节约内存,但是将会降低性能。
[] Enable futex support (NEW)
快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序
[] Enable eventpoll support (NEW)
支持事件轮循的系统调用
[] Enable signalfd() system call (NEW)
[] Enable timerfd() system call (NEW)
-*- Enable eventfd() system call
-*- Use full shmem filesystem
完全使用shmem来代替ramfs
shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多。
[] Enable AIO support (NEW)
[ ] Embedded system (NEW)
Kernel Performance Events And Counters --->
-*- Kernel performance events and counters
CPU 性能监听器
包括 CPU同一时间执行指令数,cache miss数,分支预测失败次数(Branch misprediction)。调优其他程序时或许会用到,比如JVM
[ ] Kernel performance counters (old config option) (NEW)
[ ] Debug: use vmalloc to back perf mmap() buffers (NEW)
调试
[] Enable VM event counters for /proc/vmstat (NEW)
允许在/proc/vmstat中包含虚拟内存事件记数器。
[] Enable PCI quirk workarounds (NEW)
[] Enable SLUB debugging support (NEW)
[ ] Disable heap randomization
禁用随机heap
heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS 实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆)。可选N
Choose SLAB allocator (SLUB (Unqueued Allocator)) --->
( ) SLAB
这是传统的,在所有的环境中都工作得很好。用每个CPU和每个节点队列来组织每个热对象。这是默认的分配符。
(X) SLUB (Unqueued Allocator)
非队列分配符
最小化了缓冲,不像SLAB那样使用队列缓冲对象。每个CPU的缓冲被认为是使用slab对象,而不是一个队列。SLAB可以高效使用内存,还有加强的诊断。
[ ] Profiling support
剖面支持
支持扩展剖面支持架构,被OProfile等剖面器使用。支持系统评测(对于大多数用户来说并不是必须的)。
<> OProfile system profiling (NEW)
OProfile系统评测和性能监控工具
能对整个系统进行剖面图分析,包括内核、内核模块、库文件和应用程序。
[ ] Kprobes
K探测器
可以让CPU在内核几乎所有地方陷入并执行一个回调函数。
Register_kprobe()建立一个探测点,并指定一个回调函数。
对于内核调试、非侵入式设备测试相当有用。
[ ] Optimize trace point call sites (NEW)
GCOV-based kernel profiling --->
[ ] Enable gcov-based kernel profiling
[ ] Enable loadablemodule support --->
让内核支持模块
模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。
在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。在启动时不用到的功能,编成模块是最有效的方式。
必须通过"make modules_install"把内核模块安装在/lib/modules/中。
--- Enable loadable module support
[ ] Forced module loading
强制模块加载
允许在没有版本信息的时候加载模块(modprobe –force)。这个选项设置了“F”尾标记,不可取。
[] Module unloading
允许卸载已经加载的模块。
[] Forced module unloading
允许强制卸载正在使用的模块(比较危险)。
[ ] Module versioning support (NEW)
允许使用其他内核版本的模块(可能会出问题)
有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。
[ ] Source checksum for all modules (NEW)
为所有的模块校验源码
这能够帮助所有者明确地知道他使用了那个源文件来编译这个模块(因为有的人在编译模块时不小心更改了内核模块的源代码但忘记更改版本号)。这个选项将会在所有模块建立“srcversion”域。
除非自己编写内核模块,否则不需要。
-*- Enable the block layer --->
--- Enable the block layer
块设备支持
使用硬盘、USB、SCSI设备必需选择。
[ ] Support for large (2TB+) block devices and files (NEW)
大硬盘支持
SATA 设备如果不选,会发生kernel panic,具体原因未知。
如果你的系统是装在一个ext4 分区下的,那么这项必选。help 最后一句话,ext4 分区需要这个选项。
[ ] Block layer SG support v4 (NEW)
支持通用scsi 块设备第4 版
不同于SG v3,SG v4能够处理复杂的SCSI命令:标记变量长度cdbs,使用双向数据传输和通用请求輯回复协议(比如任务管理器功能和串行SCSI SMP功能)。
若不清楚可选N。
[ ] Block layer data integrity support(NEW)
块设备层数据完整性支持。一些储存设备允许额外信息的储存和找回,以便保护数据。块设备层数据完整性选项提供了相应的挂钩,这可以用于文件系统中,以确保更好的数据完整性。若不清楚可选N。