Linux-2.6.31内核优化指南

合集下载

Linux-2.6.31 内核移植

Linux-2.6.31 内核移植

Linux-2.6.31内核移植实现功能:一>支持小页/大页NandFlash—64M/256M二>支持yaffs2文件系统三>支持320*240LCD四>支持DM9000网卡五>支持UDA1341声卡六>支持RTC七>完善了触摸屏驱动八>支持常用USB设备九>支持常用USB摄像头十>支持CMOS摄像头驱动移植十一>LCD背光移植手册:linux2.6.31移植V1.5.pdf补丁文件:linux-2.6.31_TX2440A.rar编译:#make distclean#cp TX2440A_config_256M_W35.config#make zImage编译完后,会在arch/arm/boot下生成zImage内核镜像文件[其它说明:linux-2.6.31_TX2440A20110106已经添加了3.5寸、4.3寸、7寸屏的驱动内核源码的根目录下有3个配置文件:TX2440A_config_256M_W35—>3.5寸屏的配置文件TX2440A_config_256M_W43—>4.3寸屏的配置文件TX2440A_config_256M_Q70—>7.0寸屏的配置文件编译内核之前,只需要LOAD相应的配置文件就可以生成对应该屏的内核。

图形化配置:#make menuconfig<—进入图形化配置界面在配置菜单中选择这一项:"Load an Alternate Configuration File",输入2440的默认配置文件:TX2440A_config_256M_W35,然后选择OK。

配置完后,回到主菜单,选择这一项"Save anAlternate Configuration File",输入要保存的配置文件名称:.config(默认)或自己取名:TX2440A_config,退出,编译内核]内核移植步骤:一、准备移植二、支持NandFlash启动时输出:S3C24XX NAND Driver,(c)2004Simtec Electronics0x000000000000-0x000000100000:"boot"0x000000120000-0x000000520000:"kernel"0x000000520000-0x000010000000:"yaffs2"三、支持yaffs2文件系统启动时(成功挂载文件系统)输出:yaffs:dev is32505858name is"mtdblock2"yaffs:passed flags""yaffs:Attempting MTD mount on31.2,"mtdblock2"yaffs:auto selecting yaffs2yaffs_read_super:isCheckpointed0VFS:Mounted root(yaffs filesystem)on device31:2.Freeing init memory:196K四、LCD驱动的移植启动时输出:Console:switching to colour frame buffer device40x30fb0:s3c2410fb frame buffer devic e五、DM9000驱动的移植启动时输出:dm9000Ethernet Driver,V1.31Now use the default MAC address:08:90:90:90:90:90eth0:dm9000e at c881c000,c8820004IRQ62MAC:08:90:90:90:90:90系统启动后,可能会出现这个错误:ifconfig:SIOCSIFFLAGS:Cannot assign requested address原因是MAC地址没有设置或没有设置对,在文件系统的启动脚本中加上:ifconfig eth0downifconfig eth0hw ether XX:XX:XX:XX:XX:XX<—MAC地址,随便设ifconfig eth0up一般问题可以解决,如果还提示有错,再改一下MAC地址。

Red Hat Enterprise Linux 6 效能微調指南说明书

Red Hat Enterprise Linux 6 效能微調指南说明书

Red Hat Enterprise Linux 6效能微調指南優化 Red Hat Enterprise Linux 6 的子系統處理能力版 4.0Last Updated: 2017-10-12Red Hat Enterprise Linux 6 效能微調指南優化 Red Hat Enterprise Linux 6 的子系統處理能力版 4.0Red Hat 主題專員編輯者Don DomingoLaura Bailey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 內容目錄章 1. 總覽1.1. 讀者1.2. 水平擴充能力1.2.1. 平行運算1.3. 分散式系統1.3.1. 通訊1.3.2. 儲存環境1.3.3. 聚集網路章2. RED HAT ENTERPRISE LINUX 6 效能提升2.1. 支援 64 位元2.2. 票證盤旋鎖2.3. 動態清單結構2.4. 無計時 KERNEL 2.5. 控制群組2.6. 改進儲存與檔案系統章 3. 監控和分析系統效能3.1. PROC 檔案系統3.2. GNOME 與 KDE 系統監控程式3.3. 內建的命令列監控工具3.4. TUNED 與 KTUNE3.5. 應用程式設定檔工具3.5.1. SystemTap3.5.2. OProfile3.5.3. Valgrind3.5.4. Perf3.6. RED HAT ENTERPRISE MRG 章4. CPU 拓樸執行續插斷4.1. CPU 拓樸4.1.1. CPU 與 NUMA 拓樸4.1.2. 微調 CPU 效能4.1.2.1. 使用 taskset 設定 CPU 關聯4.1.2.2. 使用 numactl 控制 NUMA 政策4.1.3. numastat 4.1.4. NUMA 關聯管理 daemon (numad )4.1.4.1. numad 的好處4.1.4.2. 操作模式4.1.4.2.1. 使用 numad 作為服務4.1.4.2.2. 以執行檔方式執行 numad 4.2. CPU 排程4.2.1. 即時排程政策4.2.2. 正常的排程政策4.2.3. 選擇政策4.3. 微調插斷與 IRQ4.4. RHEL 6 中,NUMA 的加強功能4.4.1. 優化空機系統與可擴充能力4.4.1.1. 感知拓樸的加強功能445556781010101111111215151516171818181919202121212121212224242627272828282929303030313232內容目錄1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1.2. 多處理器同步的加強功能4.4.2. 優化虛擬功能章5. 記憶體5.1. 巨型轉譯後備緩衝區5.2. 巨型分頁與通透式巨型分頁5.3. 使用 VALGRIND 側寫記憶體使用量5.3.1. 使用 memcheck 側寫記憶體使用量5.3.2. 以 Cachegrind 側寫快取使用量5.3.3. 使用 Massif 側寫堆積與堆疊空間5.4. 微調處理能力5.5. 微調虛擬記憶體章6. 輸入/輸出6.1. 功能6.2. 分析6.3. 工具6.4. 配置6.4.1. 完全公平佇列(CFQ )6.4.2. 期限 I/O 排程器6.4.3. Noop 章7. 檔案系統7.1. 檔案系統微調考量7.1.1. 格式化選項7.1.2. 掛載選項7.1.3. 檔案系統維護7.1.4. 應用程式考量7.2. 檔案系統效能的設定檔7.3. 檔案系統7.3.1. ext4 檔案系統7.3.2. XFS 檔案系統7.3.2.1. XFS 的基本微調7.3.2.2. XFS 進階微調7.4. 叢集7.4.1. 全域檔案系統 2章 8. 網路8.1. 網路效能提升8.1.1. 接收封包操控(Receive Packet Steering ,RPS )8.1.2. 接收流量操控(Receive Flow Steering ,RFS )8.1.3. TCP 精簡串流的 getsockopt 支援8.1.4. 支援通透式代理8.2. 優化網路設定8.2.1. Socket 接收緩衝區大小8.3. 封包接收總覽8.3.1. CPU/快取關聯8.4. 解決常見的佇列/FRAME 遺失問題8.4.1. NIC 硬體緩衝區8.4.2. socket 佇列8.5. MULTICAST 考量附錄 A. 修訂記錄323234343435353637384043434344474849505252525253545454555556565858606060606061616263636364646566效能微調指南2內容目錄3效能微調指南章 1. 總覽《效能微調指南》乃配置與優化 Red Hat Enterprise Linux(Red Hat 企業版 Linux,以下簡稱「RHEL」)的全方位參考文件。

linux系统内核参数优化-linux快速入门教程

linux系统内核参数优化-linux快速入门教程

linux系统内核参数优化-linux快速⼊门教程内核的 shmall 和 shmmax 参数SHMMAX= 配置了最⼤的内存segment的⼤⼩ ------>这个设置的⽐SGA_MAX_SIZE⼤⽐较好。

SHMMIN= 最⼩的内存segment的⼤⼩SHMMNI= 整个系统的内存segment的总个数SHMSEG= 每个进程可以使⽤的内存segment的最⼤个数配置信号灯( semphore )的参数:SEMMSL= 每个semphore set⾥⾯的semphore数量 -----> 这个设置⼤于你的process的个数吧,否则你不得不分多个semphore set,好像有process+n之说,我忘了n是⼏了。

SEMMNI= 整个系统的semphore set总数SEMMNS=整个系统的semphore总数shmall 是全部允许使⽤的共享内存⼤⼩,shmmax 是单个段允许使⽤的⼤⼩。

这两个可以设置为内存的 90%。

例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的⼤⼩为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

修改 /etc/sysctl.confkernel.shmmax=15461882265kernel.shmall=3774873kernel.msgmax=65535kernel.msgmnb=65535执⾏ sudo sysctl -p可以使⽤ ipcs -l 看结果。

ipcs -u 可以看到实际使⽤的情况========================================================================linux 内存管理⼀、前⾔本⽂档针对OOP8⽣产环境,具体优化策略需要根据实际情况进⾏调整;本⽂档将在以下⼏个⽅⾯来阐述如何针对RedHat Enterprise Linux 进⾏性能优化。

RedHat5 内核升级指南

RedHat5 内核升级指南

RedHat5.3 升级内核到2.6.33 版本错误:insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists编译2.6.31内核后重启出现insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists解决方法:1,解压initrd文件[root@bogon ~]# cp /boot/initrd-2.6.30.4.img /tmp[root@bogon ~]# cd /tmp/[root@bogon tmp]# lsinitrd-2.6.30.4.img[root@bogon tmp]# mkdir newinitrd[root@bogon tmp]# cd newinitrd/[root@bogon newinitrd]# zcat ../initrd-2.6.30.4.img |cpio -i11537 blocks释放之后看到如下内容[root@bogon newinitrd]# lsbin dev etc init lib proc sbin sys sysroot2,ok,下边就是编辑init,删掉其中重复的四行中的两行echo "Loading dm-region-hash.ko module"insmod /lib/dm-region-hash.koecho "Loading dm-region-hash.ko module"insmod /lib/dm-region-hash.ko3,重新打包initrd[root@bogon newinitrd]# find .|cpio -c -o > ../initrd11538 blocks[root@bogon newinitrd]# cd ..[root@bogon tmp]# gzip -9 < initrd > initrd.img[root@bogon tmp]# lsinitrd-2.6.30.4.img initrd initrd.img newinitrd好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd-2.6.30.4.img为initrd.img就可以了,这样“insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists”就不会有了其实将init文件的第二行“setquiet”去掉,你就知道initrd文件到底在做什么了本文来自CSDN博客,转载请标明出处:/jinxl560/archive/2009/09/17/4563716.aspx。

如何优化 Linux 内核参数

如何优化 Linux 内核参数

如何优化 Linux 内核参数随着计算机技术的不断发展,更多的人开始使用 Linux 操作系统。

作为一个开源的操作系统, Linux 在保障安全性、稳定性和可靠性方面表现出色。

除此之外, Linux 操作系统也非常灵活,用户可以根据自己的需求和喜好对其进行定制和优化。

其中,内核参数的优化尤为重要,因为它能直接影响到系统的性能和稳定性。

那么,如何优化 Linux 内核参数呢?一、理解内核参数的含义和作用内核参数是一组指定操作系统内部参数的开关,通过改变这些参数可以改善系统的性能和稳定性。

内核参数有许多种,它们控制着各种功能的行为和特性,如网络协议、文件系统、内存管理、I/O 等方面。

对于不同的应用场景,其内核参数的优化方向也不同。

比如,对于高负载的 web 服务器,应优化网络协议参数和内存管理参数;而对于 I/O 密集型应用,应优化磁盘和文件系统相关参数。

二、查看和修改内核参数在 Linux 操作系统中,用户可以通过 /proc 系统文件夹和 sysctl命令查看和修改内核参数。

具体方法如下:1. 查看内核参数:使用 cat /proc/sys/[文件夹路径]/[参数名] 命令即可。

其中, [文件夹路径] 和 [参数名] 根据所需参数而不同。

举例来说,如果要查看 TCP 连接超时时间,可以使用 cat/proc/sys/net/ipv4/tcp_keepalive_time 命令。

输出结果为系统当前的TCP 连接超时时间。

类似地,如果要查看系统的文件描述符限制,可以使用 cat /proc/sys/fs/file-max 命令。

2. 修改内核参数:使用 sysctl -w [参数名]=[新值] 命令即可。

其中, [参数名] 和 [新值] 由用户自行指定。

举例来说,如果要将 TCP 连接超时时间改为 180 秒,可以使用sysctl -w net.ipv4.tcp_keepalive_time=180 命令。

Linux2.6下内核调试技术的改进与研究

Linux2.6下内核调试技术的改进与研究
合 . 法 轻易 的将 内核 代码 放 在 调试 程 序 中执 行 和 无 跟 踪 。 因而在 编 写 驱动 程 序之 前 . 们 首 先编 译 并 我
安 装 自己的新 内核 . 是 为 了在 内核 代 码 中加 入 以 这
收 稿 日期: 0 5 0 — 9 20— 80 基 金 项 目: 安 部 金 盾 工 程 资 助 项 目 (1 A 2W0 3 公 JG B 3 1 )
Ab ta t Ac o dn h iu d l c a im n e ied e ’ lme t. hsp p ra ay e e k re e sr c : cr igt te Ln xmo ue me h ns a dd vc dv rsee ns ti a e lBst e l - o n h n d b gp be i ed vc r e ’ e eo me tpo e s n d rsac e e k r e e u c n lg o gd , a - u r lm n t e ied v rsd v lp n rc s,a ee rh st en l b gt h oo yt mu lyme o h i h d e h n w i ,rp ssa mp o e ou o b u mo alc t nma a e n d ac s ntek r e. hl p o oe i rv dslt n a o t e n i me w l ai , n g me ta ce si e 1 o o n h n Ke r s Ln x26 De u e h oo y K o d ywo d : iu ., b g tc n lg , ig
YANG o Ma ,DAIZib n - i
( stt o lc o i T cn lg,h L fr ai n ier g nvri , hnzo 5 0 4C ia I tue f et nc eh o y teP AI om t nE g ei i sy Z e ghu4 0 0 hn ) ni E r o n o n nU e t

linux-2[1].6.31-探秘Linux SysRq魔法键

linux-2[1].6.31-探秘Linux SysRq魔法键
echo 8 > /proc/sysrq-trigger
记住,在触发 sysrq 命令后将日志级别返回到正常状态
有问题的时候向谁咨询 ~~~~~~~~~~~~~~~~~~~
我会尽快解答关于注册系统的问题。 - Crutcher
5
致谢 ~~~
Mydraal <vulpyne@> 编写 Adam Sulmicki <adam@> 进行了更新 Jeremy M. Dolan <jmd@> 2001/01/28 10:15:59 进行了更新 Crutcher Dunnavant <crutcher+kernel@> 添加了新的信息
创建 sysrq_key_op 后,调用内核函数 register_sysrq_key(int key, struct sysrq_key_op *op_p),该函数会将'op_p'所指的操作注册到表中键值'key'处,如果表中的对应位置为空的 话。模块卸载时,必须调用 unregister_sysrq_key(int key, struct sysrq_key_op *op_p),该函数 会移除键值'key'中的'op_p'指向的操作结构,如果操作结构注册在对应项中的话。这是为了 防止对应项在你注册后被覆盖。
t'E'rm 和 k'I'll 用于一些进程脱离你的控制而你无法将它们杀死,而它们会生成其它进 程的场合。
"'J'ust thaw it"用于因为 FIFREEZE ioctl 冻结一个(可能是 root)文件系统而导致系统 没有反应的场合。
有时候使用 SysRq 后似乎卡住了,这时该怎么做 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Linux系统优化配置及安全设置

Linux系统优化配置及安全设置

Linux系统优化配置及安全设置系统参数配置:修改/etc/profile文件,加入:ulimit -u 10240ulimit -n 4096ulimit -d unlimitedulimit -m unlimitedulimit -s unlimitedulimit -t unlimitedulimit -v unlimited修改/etc/rc.d/rc.local,加入:echo ‘131072′ > /proc/sys/fs/file-maxecho ‘131072′ > /proc/sys/fs/inode-max(1G内存值修改成:65535 2G内存值修改成:131072 4G内存值修改成:262144)修改/etc/sysctl.conf文件,加入:net.core.rmem_default = 16777216net.core.rmem_max = 16777216net.core.wmem_default = 16777216net.core.wmem_max = 16777216net.ipv4.tcp_timestamps = 0net.ipv4.tcp_sack =1net.ipv4.tcp_window_scaling = 1dev_max_backlog=3000#Modify i-node#sys.fs.file-max= 65535#sys.fs.inode-max= 65535#Set System Memory#vm.bdflush="30 500 0 0 500 3000 60 20 0"#vm.kswapd="1024 32 64"#Disable HackAttack!net.ipv4.conf.eth0.accept_source_route=0net.ipv4.conf.lo.accept_source_route=0net.ipv4.conf.default.accept_source_route=0net.ipv4.conf.all.accept_source_route=0net.ipv4.conf.lo.accept_redirects=0net.ipv4.conf.all.accept_redirects=0net.ipv4.conf.eth0.accept_redirects=0net.ipv4.conf.default.accept_redirects=0net.ipv4.conf.lo.secure_redirects=0net.ipv4.conf.all.secure_redirects=0net.ipv4.conf.eth0.secure_redirects=0net.ipv4.conf.default.secure_redirects=0net.ipv4.conf.eth0.send_redirects=0net.ipv4.conf.lo.send_redirects=0net.ipv4.conf.default.send_redirects=0net.ipv4.conf.all.send_redirects=0net.ipv4.tcp_syncookies=1net.ipv4.icmp_echo_ignore_broadcasts=1net.ipv4.icmp_ignore_bogus_error_responses=1#Web Serversnet.ipv4.tcp_tw_reuse=1net.ipv4.tcp_tw_recycle=1net.ipv4.tcp_fin_timeout=30net.ipv4.tcp_keepalive_time=1800net.ipv4.tcp_keepalive_probes = 30net.ipv4.tcp_keepalive_intvl = 3net.ipv4.core.wmem_max=16777216net.ipv4.core.rmem_max=16777216net.ipv4.tcp_rmem="4096 87380 8388608"net.ipv4.tcp.wmem="4096 87380 8388608"net.ipv4.tcp_max_syn_backlog=8192net.ipv4.tcp_retries2 = 5net.ipv4.ip_local_port_range = 1024 65000net.ipv4.tcp_mem = 78643200 104857600 157286400net.ipv4.tcp_max_tw_buckets = 50000修改/etc/security/limits.conf* soft nofile 265535* hard nofile 265535防火墙安全:iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT也有人写作iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT--limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改防止各种端口扫描iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPTPing洪水攻击(Ping of Death)iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux 2.6.31内核优化指南作者:Ken WuEmail: ken.wug@介绍本文档是一篇关于Linux Kernel 2.6.31的最简优化指南。

作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核。

(非生产环境)本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸,关闭部分安全特性等方式来进行的。

优化后的效果,主要体现在OS启动时间,启动后的内存占用以及应用程序运行性能。

由于作者水平有限,如果描述错误,还请不吝指教。

运行环境虚拟机Virtualbox 3.1.4CPU Core 2 Duo P9500 2.53G双核开启vt-x, APIC磁盘虚拟10G的SATA磁盘内存分了1G物理内存网卡虚拟AMD PCNet32 100M其他USB,串口,显卡,声卡全关作者是在虚拟机中编译的内核,如果你与作者的运行环境不同,则本文档中的部分描述可能会与你的实际情况有一定出入。

不过,相信大部分用户在看到选项释义时,能做出适合自己的选择。

说明下列选项中,通过"// "注释的行,代表金国步写的内核选项简介中未提及的选项释义。

通过红色"<==="注释的行,代表内核默认开启,本文档推荐关闭的选项,释义部分会给出关闭的理由。

参考资料金国步写的内核选项简介Linux Kernel DatabaseLinuxsir BBS优化前后性能对比项目优化前优化后内核尺寸 4.1M 1.6M启动时间(含dhcp+默认init service)22s14s启动后的内存占用25M22MAPP SPEC测试成绩待测待测General setup --->[ ] Prompt for development and/or incomplete code/drivers <===显示尚在开发中或尚未完成的代码和驱动.我不是内核或驱动开发人员。

() Local version - append to kernel release[ ] Automatically append version information to the version string Kernel compression mode (Bzip2) ---> <===对比默认的Gzip,Bzip2拥有更高的压缩比[*] Support for paging of anonymous memory (swap)[*] System V IPC[*] BSD Process Accounting[ ] BSD Process Accounting version 3 file format[ ] Export task/process statistics through netlink (EXPERIMENTAL) <===体验类选项一律关[ ] Auditing support <===给SELinux提供支持。

我的使用场景主要是开发应用程序,不需要那么高的安全性,另外安全总是以牺牲性能为代价RCU Subsystem ---> // 非对称读写锁系统是一种新的kernel锁机制,适用于读多写少环境RCU Implementation (Classic RCU) ---> <===选择标准的RCU系统,tree-base是给拥有大规模CPU集群的SMP系统用的< > Kernel .config support(18) Kernel log buffer size (16 => 64KB, 17 => 128KB)[] Control Group support ---><=== cgroups支持,文档资料,cgroups主要作用是给进程分组,并可以动态调控进程组的CPU占用率。

比如A进程分到apple组,给予20%CPU占用率,E进程分easy组,给予50%CPU占用率,最高100%。

我目前没有此类应用场景,用到时会选择将其编译进去。

[] Kernel->user space relay support (formerly relayfs) <===在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,我目前没有此类应用场景-*- Namespaces support[] UTS namespace <===我没有已安装的应用程序要用到UTS ns[] IPC namespace <===我没有已安装的应用程序要用到IPC ns[] Initial RAM filesystem and RAM disk (initramfs/initrd) support <===用于在真正内核装载前,做一些操作(俗称两阶段启动),比如加载module,mount一些非root分区,提供灾难恢复shell环境等,资料,我是期望直接从kernel image直接启动,所以没选它[*] Optimize for size[ ] Configure standard kernel features (for small systems) ---> -*- Load all symbols for debugging/ksymoops[ ] Do an extra kallsyms pass <===除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项Performance Counters --->[*] Kernel Performance Counters // CPU性能监听器,包括CPU 同一时间执行指令数,cache miss数,分支预测失败次数(Branch misprediction)。

调优其他程序时或许会用到,比如JVM[ ] Strip assembler-generated symbols during link[ ] Disable heap randomizationChoose SLAB allocator (SLUB (Unqueued Allocator)) --->[ ] Profiling support (EXPERIMENTAL) <===我不是内核开发人员,不需要profile内核[] Activate markers <===一种运行时状态分析诊断工具,类似instrumentation,资料,我用不到[ ] Kprobes <===我不是内核开发人员,不需要调试内核GCOV-based kernel profiling --->[ ] Enable gcov-based kernel profiling[*] Enable loadable module support ---> //我很少使用dynamic module loading,所以,下面的选项只留一个unloading即可(默认)--- Enable loadable module support[ ] Forced module loading[*] Module unloading[ ] Module versioning support[ ] Source checksum for all modules-*- Enable the block layer --->--- Enable the block layer[*] Support for large (2TB+) block devices and files //大硬盘支持,SATA设备如果不选,会发生kernel panic,具体原因未知[ ] Block layer SG support v4 <===支持通用scsi块设备第4版,我用的是SATA[ ] Block layer data integrity supportIO Schedulers ---> // IO调度器支持,不同程序可以会选用不同的调度策略,这里我们不要动他<*> Anticipatory I/O scheduler<*> Deadline I/O scheduler<*> CFQ I/O schedulerDefault I/O scheduler (CFQ) --->Processor type and features --->[*] Tickless System (Dynamic Ticks) // CPU节能,动态时间片意思是当CPU处于空闲时,降低内核定时器的轮询频率[*] High Resolution Timer Support //我有的时候要测试Real Time JVM,希望内核能支持这种高响应速度的内核定时器,一般用户可关闭[*] Symmetric multi-processing support[ ] Support sparse irq numbering <===如果你想支持大量CPU,又想使用较低的内核内存占用,请启用它。

我只有单块CPU[*] Enable MPS table//让多核/多CPU系统支持ACPI[ ] Support for big SMP systems with more than 8 CPUs[ ] Support for extended (non-PC) x86 platforms <===我是X86平台,不需要再支持其他平台[*] Single-depth WCHAN output //跟proc相关的最好不要关[ ] Paravirtualized guest support --->--- Paravirtualized guest support[ ] MemtestProcessor family (Core 2/newer Xeon) ---> <===这里请选择对应的CPU,我是core 2 duo[ ] Generic x86 support <===通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选了[*] HPET Timer Support(4) Maximum number of CPUs <===我的CPU是双核,算上超线程HT最多虚拟4颗逻辑CPU,所以我选4,默认是8[*] SMT (Hyperthreading) scheduler support[*] Multi-core scheduler supportPreemption Model (Voluntary Kernel Preemption (Server)) ---> <===这里我选择了Server,它最贴近我的使用场景[*] Reroute for broken boot IRQs //防止同时收到多个boot IRQ(中断)时,系统混乱[*] Machine Check Exception[ ] Use legacy machine check code (will go away)[*] Intel MCE features[ ] AMD MCE features <===我是intel CPU[ ] Support for old Pentium 5 / WinChip machine checks< > Machine check injector support< > Toshiba Laptop support< > Dell laptop support[ ] Enable X86 board specific fixups for reboot <===修正某些旧x86主板的重起bug,这种主板基本绝种了<*> /dev/cpu/microcode - microcode support[*] Intel microcode patch loading support[ ] AMD microcode patch loading support <===我是intel CPU<*> /dev/cpu/*/msr - Model-specific register support<*> /dev/cpu/*/cpuid - CPU information support< > /sys/kernel/debug/x86/cpu/* - CPU Debug supportHigh Memory Support (4GB) --->(4096) Low address space to protect from user allocation[*] Allocate 3rd-level pagetables from highmem<===在内存很多(大于4G)的机器上将用户空间的页表放到高位内存区,以节约宝贵的低端内存,我只虚拟了1G[ ] Check for low memory corruption <===低位内存脏数据检查,默认是每60秒检查一次。

相关文档
最新文档