CPU内核配置(一):通用内核配置

General setup
常规设置
Prompt for development and/or incomplete code/drivers 
显示尚在开发中或尚未完成的代码与驱动 
Local version - append to kernel release 
在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到 
Automatically append version information to the version string 
自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持 
Support for paging of anonymous memory (swap) 
使用交换分区或者交换文件来做为虚拟内存 
System V IPC 
System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么 
POSIX Message Queues 
POSIX消息队列,这是POSIX IPC中的一部分 
BSD Process Accounting 
将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息 
  
BSD Process Accounting version 3 file format 
使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式
Export task/process statistics through netlink 
通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的(不确定可以不选) 
  
Enable per-task delay accounting 
在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间  
Enable extended accounting over taskstats 
在统计信息中包含扩展进程所花费的时间  
  
Enable per-task storage I/O accounting 
在统计信息中包含I/O存储进程所花费的时间 
Auditing support 
审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计 
  
Enable system-call auditing support 
支持对系统调用的审计
Kernel .config support 
把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息 
  
Enable access to .config through /proc/config.gz 
允许通过/proc/config.gz访问内核的配置信息
Kernel log buffer size (16 => 64KB, 17 => 128KB) 
内核信息大小 
Control Group support 
cgroup支持,如cpusets那样来使用cgroup子系统进程(不确定可以不选) 
  
Example debug cgroup subsystem 
cgroup子系统调试例子  
Namespace cgroup subsystem 
cgroup子系统命名空间  
Device controller for cgroups 
cgroups设备控制器  
Cpuset support 
只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它
Group CPU scheduler 
CPU组调度(Group Scheduling,可以为进程赋予不同于nice level的调度优先级。尤其在企业级硬件系统上,可以进一步优化实时任务的调度。桌面用户可以不选) 
  
Group scheduling for SCHED_OTHER 
SCHED_OTHER(SCHED:Process Scheduler,负责控制进程对CPU的使用.调度算法的公平,有效,硬件有关事件的及时处理)组调度  
Group scheduling for SCHED_RR/FIFO 
SCHED_RR?FIFO组调度  
Basis for grouping tasks 
基于分配的任务  
  
user id 
使用者id  
Control groups 
控制组 
Simple CPU accounting cgroup subsystem 
简单cgroup子系统cpu所花费的时间 
Resource counters 
资源计数器 
Memory Resource Controller for Control Groups 
cgroup内存资源控制器 
Create deprecated sysfs files 
建立过时的sysfs文件系统(虽然写着过时然而许多版本仍然有编译) 
Include legacy /proc//cpuset file 
创建/proc//cpuset文件 
Kernel->user space relay support (formerly relayfs) 
在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口 
Namespaces support 
命名空间支持,允许服务器为不同的用户信息提供不 同的用户名空间服务 
  
UTS namespace 
UTS命名空间,不确定可以不选  
IPC namespace 
IPC命名空间,不确定可以不选  
User namespace 
User命名空间,不确定可以不选  
PID Namespaces 
PID命名空间,不确定可以不选
Initial RAM filesystem and RAM disk (initramfs/initrd) support 
初始RAM的文件和RAM磁盘( initramfs /initrd)支持(如果要采用initrd启动则要选择,否则可以不选) 
  
Initramfs source file(s) 
initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白
Optimize for size (Look out for broken compilers!) 
编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码 
Configure standard kernel features (for small systems) 
配置标准的内核特性(为小型系统) 
  
Enable 16-bit UID system calls 
允许对UID系统调用进行过时的16-bit包装  
Sysctl syscall support 
不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核行为的参数或变量  
Load all symbols for debugging/kksymoops 
装载所有的调试符号表信息,仅供调试时选择  
  
Include all symbols in kallsyms 
在kallsyms中包含内核知道的所有符号,内核将会增大300K  
Do an extra kallsyms pass 
除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项 
  
Support for hot-pluggable devices 
支持热插拔设备,如usb与pc卡等,Udev也需要它  
Enable support for printk 
允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择  
BUG() support 
显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略  
Enable ELF core dumps 
内存转储支持,可以帮助调试ELF格式的程序  
Enable PC-Speaker support 
允许禁用电脑内部声响
Disable heap randomization 
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆) 
Enable full-sized data structures for core 
在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能 
Enable futex support 
快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序 
Enable eventpoll support 
支持事件轮循的系统调用 
Enable signalfd() system call 
启用signalfd()事件的文件描述符系统调用 
Enable timerfd() system call 
启用timerfd()事件的文件描述符系统调用 
Enable eventfd() system call 
启用eventfd()事件的文件描述符系统调用 
Use full shmem filesystem 
完全使用shmem来代替ramfs.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多 
Enable VM event counters for /proc/vmstat 
允许在/proc/vmstat中包含虚拟内存事件记数器 
Enable SLUB debugging support 
支持SLUB内存分配管理器调试 
Choose SLAB allocator 
选择内存分配管理器(强烈推荐使用SLUB) 
  
SLAB 
各种环境通用的内存分配管理器  
SLUB (Unqueued Allocator) 
更加优秀的内存分配管理器  
SLOB (Simple Allocator) 
嵌入式应用的内存分配管理器
Profiling support 
支持系统评测(对于大多数用户来说并不是必须的) 
Activate markers 
激活标志(不确定可以不选) 
OProfile system profiling 
OProfile评测和性能监控工具 
Kprobes 
除非开发人员,否则不选 
Enable /proc page monitoring 
启用/proc目录检测 
Loadable module support
可加载模块支持
Enable loadable module support 
打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中 
Forced module loading 
允许强制加载模块 
Module unloading 
允许卸载已经加载的模块 
  
Forced module unloading 
允许强制卸载正在使用中的模块(比较危险)
Module versioning support 
允许使用其他内核版本的模块(可能会出问题) 
Source checksum for all modules 
为所有的模块校验源码,如果你不是自己编写内核模块就不需要它 
Automatic kernel module loading 
让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关
Block layer
块设备层
Enable the block layer 
块设备支持,使用硬盘/USB/SCSI设备者必选 
  
Support for Large Block Devices 
仅在使用大于2TB的块设备时需要  
Support for tracing block io actions 
块队列IO跟踪支持,它允许用户查看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的详细统计数据  
Support for Large Single Files 
仅在可能使用大于2TB的文件时需要  
Block layer SG support v4 
通用scsi块设备第4版支持  
Block layer data integrity support 
块设备数据完整性支持  
IO Schedulers 
IO调度器  
  
Anticipatory I/O scheduler 
假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)  
Deadline I/O scheduler 
使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)  
CFQ I/O scheduler 
使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统  
Default I/O scheduler 
默认IO调度器(建议选择CFQ)

posted on 2012-01-05 09:43  image eye  阅读(3107)  评论(0编辑  收藏  举报