ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:42.01KB ,
资源ID:4143922      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4143922.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux310内核编译选项.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux310内核编译选项.docx

1、Linux310内核编译选项Linux-3.10-x86_64 内核配置选项简介64-bit kernelCONFIG_64BIT编译64位内核.本文仅讲述x86_64(AMD64)平台的内核编译,所以这个是必选项.General setup常规设置Cross-compiler tool prefixCONFIG_CROSS_COMPILE交叉编译工具前缀(比如arm-linux-相当于使用make CROSS_COMPILE=arm-linux-进行编译).除非你想配置后默认自动进行交叉编译,否则不要使用此选项.Local version - append to kernel release

2、CONFIG_LOCALVERSION在内核版本后面加上自定义的版本字符串(最大64字符),可以用uname -a命令看到Automatically append version information to the version stringCONFIG_LOCALVERSION_AUTO自动在版本字符串(CONFIG_LOCALVERSION)后面添加版本信息(类似-gxxxxxxxx格式),需要有perl以及git仓库支持Kernel compression mode内核镜像的压缩格式,可选Gzip/Bzip2/LZMA/XZ/LZO格式之一,推荐使用XZ格式.你的系统中需要有相应的压

3、缩工具.Default hostnameCONFIG_DEFAULT_HOSTNAME设置默认主机名,默认值是(none).用户可以随后使用系统调用sethostname()来修改主机名.Support for paging of anonymous memory (swap)CONFIG_SWAP使用交换分区或者交换文件来做为虚拟内存System V IPCCONFIG_SYSVIPCSystem V进程间通信(IPC)支持,用于进程间同步和交换数据,许多程序需要这个功能.选Y,除非你确实知道自己在做什么POSIX Message QueuesCONFIG_POSIX_MQUEUEPOSIX

4、消息队列是POSIX IPC的一部分,如果你想编译和运行那些使用mq_*系统调用的程序(比如为Solaris开发的程序),就必须开启此选项.POSIX消息队列可以作为mqueue文件系统挂载以方便用户对队列进行操作.不确定的选Y.open by fhandle syscallsCONFIG_FHANDLE用户程序可以使用句柄(而非文件名)来追踪文件(使用open_by_handle_at(2)/name_to_handle_at(2)系统调用),即使某文件被重命名,用户程序依然可定位那个文件.此特性有助于实现用户空间文件服务器(userspace ).建议选Y,因为systemd和udev依赖

5、于它.Auditing supportCONFIG_AUDIT内核审计(跟踪每个进程的活动情况)支持,某些安全相关的内核子系统(例如SELinux)需要它.但是它会与systemd冲突,所以在使用systemd的系统上必须关闭.Enable system-call auditing supportCONFIG_AUDITSYSCALL对系统调用进行审计.既可独立使用,也可被其他内核子系统(例如SELinux)使用.Make audit loginuid immutableCONFIG_AUDIT_LOGINUID_IMMUTABLE审计时使用固定的loginuid.在使用systemd之类的系

6、统上应该开启(login服务由init进程负责重启),在使用SysVinit或Upstart之类的系统上应该关闭(login服务由系统管理员手动重启).OpenRC就是一个基于SysVinit的系统.IRQ subsystemIRQ(中断请求)子系统Expose hardware/virtual IRQ mapping via debugfsCONFIG_IRQ_DOMAIN_DEBUG通过debugfs中的irq_domain_mapping文件向用户显示硬件IRQ号/Linux IRQ号之间的对应关系.仅用于开发调试.Support sparse irq numberingCONFIG_S

7、PARSE_IRQ稀疏IRQ号支持.它允许在小型设备上(例如嵌入式设备)定义一个很高的CONFIG_NR_CPUS值,但仍然不希望占用太多内核memory footprint(一段可以被操作或被管理的内存区域)的场合.稀疏IRQ也更适合NUMA平台,因为它以一种对NUMA更友好的方式分发中断描述符.不确定的选N.Timers subsystemLinux内核时钟子系统Timer tick handling内核时钟滴答处理程序,更多信息可以参考内核源码树下的Documentation/timers/NO_HZ.txt文件Periodic timer ticks (constant rate, n

8、o dynticks)CONFIG_HZ_PERIODIC无论CPU是否需要,都强制按照固定频率不断触发时钟中断.这是最耗电的方式,不推荐使用Idle dynticks system (tickless idle)CONFIG_NO_HZ_IDLECPU在空闲状态时不产生不必要的时钟中断,以使处理器能够在较低能耗状态下运行以节约电力,适合于大多数场合Full dynticks system (tickless)CONFIG_NO_HZ_FULL完全无滴嗒:即使CPU在忙碌状态也尽可能关闭所有时钟中断,适用于CPU在同一时间仅运行一个任务,或者用户空间程序极少与内核交互的场合.即使开启此选项,也

9、需要额外设置nohz_full=?内核命令行参数才能真正生效.Full dynticks system on all CPUs by defaultCONFIG_NO_HZ_FULL_ALL即使没有设置nohz_full引导参数,也默认对所有CPU(boot CPU 除外)开启完全无滴答特性.Old Idle dynticks configCONFIG_NO_HZ等价于CONFIG_NO_HZ_IDLE,临时用来兼容老版本内核选项,未来会被删除.High Resolution Timer SupportCONFIG_HIGH_RES_TIMERS高精度定时器(hrtimer)是从2.6.16开

10、始引入,用于取代传统timer wheel(基于jiffies定时器)的时钟子系统.可以降低与内核其他模块的耦合性,还可以提供比1毫秒更高的精度(因为它可以读取HPET/TSC等新型硬件时钟源),可以更好的支持音视频等对时间精度要求较高的应用.建议选Y.提示这里说的定时器是指软件定时器,而不是主板或CPU上集成的硬件时钟发生器(ACPI PM Timer/HPET Timer/TSC Timer).CPU/Task time and stats accountingCPU/进程的时间及状态统计Cputime accountingCPU时间统计方式Simple tick based cputim

11、e accountingCONFIG_TICK_CPU_ACCOUNTING简单的基于滴答的统计,适用于大多数场合Deterministic task and CPU time accountingCONFIG_VIRT_CPU_ACCOUNTING_NATIVE通过读取CPU计数器进行统计,可以提供更精确的统计,但是对性能有一些不利影响.Full dynticks CPU time accountingCONFIG_VIRT_CPU_ACCOUNTING_GEN利用上下文跟踪子系统,通过观察每一个内核与用户空间的边界进行统计.该选项对性能有显著的不良影响,目前仅用于完全无滴答子系统(CONF

12、IG_NO_HZ_FULL)的调试Fine granularity task level IRQ time accountingCONFIG_IRQ_TIME_ACCOUNTING通过读取TSC时间戳进行统计,这是统计进程IRQ时间的更细粒度的统计方式,但对性能有些不良影响(特别是在RDTSC指令速度较慢的CPU上).BSD Process AccountingCONFIG_BSD_PROCESS_ACCT用户空间程序可以要求内核将进程的统计信息写入一个指定的文件,主要包括进程的创建时间/创建者/内存占用等信息.BSD Process Accounting version 3 CONFIG_B

13、SD_PROCESS_ACCT_V3使用新的v3版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式.比如GNU Accounting Utilities这样的工具可以识别v3格式Export task/process statistics through netlinkCONFIG_TASKSTATS通过netlink接口向用户空间导出进程的统计信息,与 BSD Process Accounting 的不同之处在于这些统计信息在整个进程生存期都是可用的.Enable per-task delay accountingCONFIG_TASK_DELAY_ACCT在

14、统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间Enable extended accounting over taskstatsCONFIG_TASK_XACCT在统计信息中包含进程的更多扩展信息.Enable per-task storage I/O accountingCONFIG_TASK_IO_ACCOUNTING在统计信息中包含进程在存储设备上的I/O字节数.RCU SubsystemRCU(Read-Copy Update)子系统.在读多写少的情况下,这是一个高性能的锁机制,对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它(速度非常快),

15、但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据,速度非常慢.RCU只适用于读多写少的情况:如网络路由表的查询更新,设备状态表的维护,数据结构的延迟释放以及多径I/O设备的维护等.RCU ImplementationRCU的实现方式Tree-based hierarchical RCUCONFIG_TREE_RCU基于树型分层结构的实现.最适用于多CPU的非实时系统.Preemptible tree-based hierarchical RCUCONFIG_TREE_PREEMPT_RCU抢占式基于树型分层结构的

16、实现.最适用于那些要求快速响应的多CPU实时系统.UP-only small-memory-footprint RCUCONFIG_TINY_RCU最简单的实现,能够大幅降低RCU系统的内存占用.最适用于单CPU的非实时系统.Preemptible UP-only small-memory-footprint RCUCONFIG_TINY_PREEMPT_RCU抢占式简单实现,能够大幅降低RCU系统的内存占用.最适用于那些要求快速响应的单CPU实时系统.Consider userspace as in RCU extended quiescent stateCONFIG_RCU_USER_QS

17、在内核和用户边界设置钩子函数,将运行在用户态的CPU从全局RCU状态机制中移除,这样就不会在RCU系统中维护此CPU的时钟滴答.除非你想要帮助开发CONFIG_NO_HZ_FULL模块,否则不要打开此选项,而且它还会对性能有不利影响.Force context trackingCONFIG_CONTEXT_TRACKING_FORCE默认在内核和用户边界进行探测(上下文跟踪),以便测试依赖于此特性的各种功能(比如用户空间的 RCU extended quiescent state),这个特性目前仅用于调试目的,未来也许会用于为CONFIG_NO_HZ_FULL模块提供支持Tree-based

18、hierarchical RCU fanout valueCONFIG_RCU_FANOUT这个选项控制着树形RCU层次结构的端点数(fanout),以允许RCU子系统在拥有海量CPU的系统上高效工作.这个值必须至少等于CONFIG_NR_CPUS的1/4次方(4次根号).生产系统上应该使用默认值(64).仅在你想调试RCU子系统时才需要减小此值.Tree-based hierarchical RCU leaf-level fanout valueCONFIG_RCU_FANOUT_LEAF这个选项控制着树形RCU层次结构的叶子层的端点数(leaf-level fanout).对于期望拥有更高

19、能耗比(更节能)的系统,请保持其默认值(16).对于拥有成千上万个CPU的系统来说,应该考虑将其设为最大值(CONFIG_RCU_FANOUT).Disable tree-based hierarchical RCU auto-balancingCONFIG_RCU_FANOUT_EXACT强制按照CONFIG_RCU_FANOUT_LEAF的值,而不是使用自动平衡树结构来实现RCU子系统.目前仅用于调试目的.未来也许会用于增强NUMA系统的性能.Accelerate last non-dyntick-idle CPUs grace periodsCONFIG_RCU_FAST_NO_HZ即使

20、CPU还在忙碌,也允许进入dynticks-idle状态,并且阻止RCU每4个滴答就唤醒一次该CPU,这样能够更有效的使用电力,同时也拉长了RCU grace period的时间,造成性能降低.如果能耗比对你而言非常重要(你想节省每一分电力),并且你不在乎系统性能的降低(CPU唤醒时间增加),可以开启此选项.台式机和服务器建议关闭此选项.Enable RCU priority boostingCONFIG_RCU_BOOST允许提升RCU子系统的实时优先级(包括读操作与写操作),以避免RCU操作被阻塞太长时间.如果系统的CPU负载经常很重,或者你需要快速的实时响应系统,那么就选Y,否则应该选N

21、.Real-time priority to boost RCU readers toCONFIG_RCU_BOOST_PRIO允许提升被长时间抢占(阻塞)的RCU读操作的实时优先级到什么程度.取值范围是1,99.默认值1适用于实时应用程序中不包含CPU密集型(CPU-bound)线程的常规场合(例如大多数桌面系统).但是如果你的实时应用程序拥有一个或多个CPU密集型线程,那么可能需要增加这个值,具体可以参考内核帮助的说明.仅在你确实理解了的情况下再改变默认值.Milliseconds to delay boosting after RCU grace-period startCONFIG_R

22、CU_BOOST_DELAY在提升RCU读操作的优先级之前,允许有多长时间潜伏期(阻塞),取值范围是0,3000,单位是毫秒,默认值是500.不确定的请使用默认值.Offload RCU callback processing from boot-selected CPUsCONFIG_RCU_NOCB_CPU如果你想帮助调试内核可以开启,否则请关闭.Build-forced no-CBs CPUs在开启CONFIG_RCU_NOCB_CPU选项的情况下,指定哪些CPU是No-CB CPU,相当于预先设置rcu_nocbs=内核引导参数.Kernel .config supportCONFIG

23、_IKCONFIG把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本从内核镜像中提取这些信息Enable access to .config through /proc/config.gzCONFIG_IKCONFIG_PROC允许通过 /proc/config.gz 文件访问内核的配置信息Kernel log buffer sizeCONFIG_LOG_BUF_SHIFT设置内核日志缓冲区的大小: 12(最小值)=4KB,.,16=64KB,17=128KB,18=256KB,.,21(最大值)=2048KBAutomatically enable

24、 NUMA aware memory/task placementCONFIG_NUMA_BALANCING_DEFAULT_ENABLED在NUMA(Non-Uniform Memory Access Architecture)系统上自动启用进程/内存均衡,也就是自动开启CONFIG_NUMA_BALANCING特性.Memory placement aware NUMA schedulerCONFIG_NUMA_BALANCING允许自动根据NUMA系统的节点分布状况进行进程/内存均衡(方法很原始,就是简单的内存移动).这个选项对UMA系统无效.提示UMA系统的例子:(1)只有一颗物理CP

25、U(即使是多核)的电脑,(2)不支持虚拟NUMA,或虚拟NUMA被禁用的虚拟机(即使所在的物理机是NUMA系统)Control Group supportCONFIG_CGROUPSCgroup(Control Group)是一种进程管理机制,可以针对一组进程进行系统资源的分配和管理,可用于Cpusets,CFS(完全公平调度器),内存管理等子系统.此外,systemd也依赖于它.更多细节可以参考内核的Documentation/cgroups/cgroups.txt文件Example debug cgroup subsystemCONFIG_CGROUP_DEBUG导出cgroups框架的调

26、试信息,仅用于调试目的.Freezer cgroup subsystemCONFIG_CGROUP_FREEZER允许冻结/解冻cgroup内所有进程Device controller for cgroupsCONFIG_CGROUP_DEVICE允许为cgroup建立设备白名单,这样cgroup内的进程将仅允许对白名单中的设备进行mknod/open操作Cpuset supportCONFIG_CPUSETSCPUSET支持:允许将CPU和内存进行分组,并指定某些进程只能运行于特定的分组.这里有一篇CPUSET的用法Include legacy /proc/cpuset 提供过时的 /pro

27、c/cpuset 文件接口Simple CPU accounting cgroup subsystemCONFIG_CGROUP_CPUACCT提供一个简单的资源控制器(Resource Controller,用于实现一组任务间的资源共享),以监控cgroup内所有进程的总CPU使用量.Resource countersCONFIG_RESOURCE_COUNTERS为cgroup提供独立于controller资源计数器Memory Resource Controller for Control GroupsCONFIG_MEMCG为cgroup添加内存资源控制器,包含匿名内存和页面缓存(Do

28、cumentation/cgroups/memory.txt).开启此选项后,将会增加关联到每个内存页fixed memory大小,具体在64位系统上是40bytes/PAGE_SIZE.仅在你确实明白什么是memory resource controller并且确实需要的情况下才开启此选项.此功能可以通过命令行选项cgroup_disable=memory进行关闭.Memory Resource Controller SCONFIG_MEMCG_SWAP给Memory Resource Controller添加对swap的管理功能.这样就可以针对每个cgroup限定其使用的mem+swap总

29、量.如果关闭此选项, memory resource controller 将仅能限制mem的使用量,而无法对swap进行控制(进程有可能耗尽swap).开启此功能会对性能有不利影响,并且为了追踪swap的使用也会消耗更多的内存(如果swap的页面大小是4KB,那么每1GB的swap需要额外消耗512KB内存),所以在内存较小的系统上不建议开启.Memory Resource Controller S enabled by defaultCONFIG_MEMCG_S如果开启此选项,那么将默认开启CONFIG_MEMCG_SWAP特性,否则将默认关闭.即使默认开启也可以通过内核引导参数s禁止此特

30、性.Memory Resource Controller Kernel Memory accountingCONFIG_MEMCG_KMEM为 Memory Resource Controller 添加对内核对象所占用内存的管理功能.和标准的 Memory Resource Controller 对内存的控制不一样之处在于:这些内核对象所占用的内存是基于每个内存页的,并且可以被swap到硬盘.使用这个功能可以确保cgroup中的进程不会单独耗尽所有内核资源.HugeTLB Resource Controller for Control GroupsCONFIG_CGROUP_HUGETLB为c

31、group添加对HugeTLB页的资源控制功能.开启此选项之后,你就可以针对每个cgroup限定其对HugeTLB的使用.Enable perf_event per-cpu per-container group (cgroup) monitoringCONFIG_CGROUP_PERF将per-cpu模式进行扩展,使其可以监控属于特定cgroup并运行于特定CPU上的线程Group CPU schedulerCONFIG_CGROUP_SCHED让CPU调度程序可以在不同的cgroup之间分配CPU的带宽.systemd资源控制单元(resource control unit)的CPUShares功能依赖于它.Group scheduling for SCHED_OTHERCONFIG_FAIR_GROUP_SCHED公平CPU调度策略,也就是在多个cgroup之间平均分配CPU带宽.鸡血补丁CONFIG_SCHED_AUTOGROUP(自动分组调度功能)依赖于它.systemd资源控制单元(resource control unit)的CPU

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1