Linux内核(4.17.10)配置项详解(x86)

64-bit kernel——支持64位General setup——通用设置Cross-compiler tool prefix——交叉编译工具前缀 Local version-append to kernel release——内核显示的版本信息,填入64字符以内的字符串,可用uname -a命令看到。 Automatically append version informatio...
摘要由CSDN通过智能技术生成
  • 64-bit kernel——支持64位
  • General setup——通用设置

    • Cross-compiler tool prefix——交叉编译工具前缀
    • Local version-append to kernel release——内核显示的版本信息,填入64字符以内的字符串,可用uname -a命令看到。
    • Automatically append version information to the version string——自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持
    • Kernel compression mode (Gzip)——内核镜像要用的压缩模式,Gzip,LZMA, XZ ,LZO,LZ4
    • Default hostname——默认主机名
    • Support for paging of anonymous memory (swap) ——使用交换分区或交换文件来做为虚拟内存。
    • System V IPC——支持system V 进程间通信机制。
    • POSIX Message Queues——支持POSIX标准的消息队列,它同样是一种IPC。
    • Enable process_vm_readv/writev syscalls——启用此选项会添加系统调用process_vm_readv和process_vm_writev,这些调用允许具有正确权限的进程直接读取或写入另一个进程的地址空间。
    • uselib syscall——此选项启用uselib syscall,这是libc5及更早版本的动态链接器中使用的系统调用。 glibc不使用此系统调用。 如果您打算运行基于libc5或更早版本的程序,则可能需要启用此系统调用。 运行glibc的当前系统可以安全地禁用它。
    • Auditing support——启用可与其他内核子系统一起使用的审核基础结构,例如SELinux(需要此用于记录avc消息输出)。 系统调用审计包含在支持它的体系结构中。
    • IRQ subsystem——中断请求子系统
      • Expose irq internals in debugfs——通过debugfs公开内部状态信息。 主要用于开发人员和调试难以诊断的中断问题
    • Timers subsystem——时钟子系统
      • Periodic timer ticks——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
    • “——
  • BSD Process Accounting
    用户进程访问内核时将进程信息写入文件中。通常主要包括进程的创建时间/创建者/内存占用等信息。建议最好选上。
    BSD Process Accounting version 3 file format
    使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式。

1.11、Export task/process statistics through netlink (EXPERIMENTAL)
通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的
Enable per-task delay accounting (EXPERIMENTAL)
在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间
Enable extended accounting over taskstats (EXPERIMENTAL)
在统计信息中包含扩展进程所花费的时间

1.12、Auditing support
审记支持,用于和内核的某些子模块同时工作,例如Security Enhanced Linux。只有选择此项及它的子项,才能调用有关审记的系统调用。

1.13、Enable system-call auditing support
支持对系统调用的审计

1.14、IRQ subsystem —>
中断子系统
Support sparse irq numbering
<=== 支持稀有的中断编号,关闭

1.15、RCU Subsystem —>
非对称读写锁系统 是一种高性能的kernel 锁机制,适用于读多写少环境
RCU Implementation (Tree-based hierarchical RCU) —>
RCU 实现机制 Tree(X) Tree-based hierarchical RCU 基本数按等级划分
Enable tracing for RCU
激活跟踪
(32) Tree-based hierarchical RCU fanout value
基本数按等级划分分列值
Disable tree-based hierarchical RCU auto-balancing

1.16、< > Kernel .config support
这个选项允许.config文件(即编译LINUX时的配置文件)保存在内核当中

1.17、(17) Kernel log buffer size (16 => 64KB, 17 => 128KB)

1.18、[ ] Control Group support —>
cgroups 支持, 文档资料 ,cgroups 主要作用是给进程分组,并可以动态调控进程组的CPU 占用率。比如A 进程分到apple 组,给予20%CPU 占用率,E 进程分easy 组,给予50%CPU 占用率,最高100% 。我目前没有此类应用场景,用到时会选择将其编译进去。
CPU bandwidth provisioning for FAIR_GROUP_SCHED
此选项允许用户定义的CPU带宽速率(限制)在公平的组调度运行的任务。组没有限制设置被认为是无约束和运行没有限制。
Group scheduling for SCHED_RR/FIFO
此功能可以让您显式地分配真实的CPU带宽任务组。

1.19、-*- Namespaces support —>
命名空间支持,允许服务器为不同的用户信息提供不 同的用户名空间服务
[*] UTS namespace
通用终端系统的命名空间。它允许容器,比如Vservers利用UTS命名空间来为不同的服务器提供不同的UTS。如果不清楚,选N。
[*] IPC namespace
IPC命名空间,不确定可以不选
[*] User namespace (EXPERIMENTAL)
User命名空间,不确定可以不选
[*] PID Namespaces
PID命名空间,不确定可以不选
[*] Network namespace

1.20、Automatic process group scheduling 自动进程组调度

1.21、[ ] enable deprecated sysfs features to support old userspace tools

1.22、-*- Kernel->user space relay support (formerly relayfs)
在某些文件系统上( 比如debugfs ) 提供从内核空间向用户空间传递大量数据的接口,我目前没有此类应用场景

1.23、 [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
用于在真正内核装载前,做一些操作(俗称两阶段启动),比如加载module ,mount 一些非root 分区,提供灾难恢复shell 环境等, 资料 ,我是期望直接从kernel image 直接启动,所以没选它

?1.24、Initramfs source file(s)
initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白

1.25、Optimize for size
这个选项将在GCC 命令后用 “-Os ” 代替 “-O2 ″参数,这样可以得到更小的内核。没必要选。选上了有时会产生错误的二进制代码。

1.26、Enable full-sized data structures for core:在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能。

1.27、Enable futex support:快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序。

1.28、Enable eventpoll support:支持事件轮循的系统调用。

1.29、Use full shmem filesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。后面的这四项都是在编译时内存中的对齐方式,0 表示
编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。内核也是一组程序呀。
Enable VM event counters for /proc/vmstat:允许在/proc/vmstat中包含虚拟内存事件记数器。
[*] Disable heap randomization
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆)

1.30、Choose SLAB allocator (SLAB) —>
选择内存分配管理器(强烈推荐使用SLUB)

1.31、[ ] Configure standard kernel features (for small systems) —>
这个选项可以让内核的基本选项和设置无效或者扭曲。这是用于特定环境中的,它允许“非标准”内核。你要是选它,你一定要明白自己在干什么。这是为了编译某 些特殊用途的内核使用的,例如引导盘系统。配置标准的内核特性(为小型系统)
Enable 16-bit UID system calls:允许对UID系统调用进行过时的16-bit包装。
Sysctl syscall support 几乎使用不到这一选项,不选它可以轻微使内核变小
Include all symbols in kallsyms:在kallsyms中包含内核知道的所有符号,内核将会增大300K。
Enable support for printk:允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择。
BUG() support:显示故障和失败条件(BUG 和WARN),禁用它将可能导致隐含的错误被忽略。
Enable ELF core dumps:内存转储支持,可以帮助调试ELF格式的程序。

1.32、[*] Profiling support
不选剖面支持,用一个工具来扫描和提供计算机的剖面图。支持系统评测(对于大多数用户来说并不是必须的)

1.33、OProfile system profiling
OProfile评测和性能监控工具

1.35、[ ] OProfile multiplexing support (EXPERIMENTAL)

1.34、Kprobes
调试内核除非开发人员,否则不选

?1.35、Optimize trace point call sites

1.36、GCOV-based kernel profiling
[ ] Enable gcov-based kernel profiling 不选

2、Enable loadable module support
2.1 Forced module loading
允许强制加载模块

2.2 Module unloading
允许卸载已经加载的模块

2.3 Forced module unloading
允许强制卸载正在使用中的模块(比较危险)这个选项允许你强行卸除模块,即使内核认为这不安全。内核将会立即移除模块,而不管是否有人在使用它(用 rmmod -f 命令)。这主要是针对开发者和冲动的用户提供的功能。如果不清楚,选N。

2.4 Module versioning support
有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。这有时可能会有点用。如果不清楚,选N。允许使用其他内核版本的模块(可能会出问题)

2.5 Source checksum for all modules
为所有的模块校验源码,如果你不是自己编写内核模块就不需要它这个功能是为了防止你在编译模块时不小心更改了内核模块的源代码但忘记更改版本号而造成版本冲突。如果不清楚,选N。

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

3.1 Support for large (2TB+) block devices and files
仅在使用大于2TB的块设备时需要

3.2 Block layer SG support v4
通用scsi块设备第4版支持

3.3 Block layer data integrity support
块设备数据完整性支持

?3.4 Block layer bio throttling support
可用于限制设备的IO速度

3.5 Partition Types
Advanced partition selection
如果你想要在linux上使用一个在其他的介质上运行着操作系统的硬盘时,选择Y,如果你不确定时可以选N

3.6 IO Schedulers
IO调度器I/O是输入输出带宽控制,主要针对硬盘,是核心的必须的东西。这里提供了三个IO调度器。
Deadline I/O scheduler
使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)Deadline I/O调度器简单而又紧密,在性能上和抢先式调度器不相上下,在一些数据调入时工作得更好。至于在单进程I/O磁盘调度上,它的工作方式几乎和抢先式调度器相同,因此也是一个好的选择。

CFQ I/O scheduler 
使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统CFQ调度器尝试为所有进程提供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。 

Default I/O scheduler (CFQ) 
默认IO调度器我这样理解上面三个IO调度器: 
抢先式是传统的,它的原理是一有响应,就优先考虑调度。如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。    期限式则是:所有的工作都有最终期限,在这之前必须完成。当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。    CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。 
( *) Deadline     
(  ) CFQ   
(  ) No-op 

4、Processor type and features (处理器类型及特点)
?4.1 DMA memory allocation support
该选项允许小于32位地址的设备使用前16MB的地址空间,如果不缺定的话,选Y

4.2 Symmetric multi-processing support
对称多处理器支持,如果你有多个CPU或者使用的是多核CPU就选上.此时”Enhanced Real Time Clock Support”选项必须开启,”Advanced Power Management”选项必须关闭如果你选N,内核将会在单个或者多个CPU的机器上运行,但是只会使用一个CPU。如果你选Y,内核可以在很多(但不是所有)单CPU的机器上运行,在这样的机器,你选N会使内核运行得更快。 注意如

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝月心语

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值