- 浏览: 322389 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chen3888015:
更方便、更实用的IDC机房服务器监控软件UNNOC -
PV_love:
沙发一个,看的人多,没人顶
Oracle查询优化 -
sanpic:
好文章,好东西
关键点的第5条,logfile,少打了个字母f ...
oracle create database -
kimmking:
lz不厚道,从dell网站复制过来的。
DELL R900 服务器 RAID 配置详解 -
wxq594808632:
记性不好...
DELL R900 服务器 RAID 配置详解
介绍 本文档是一篇关于Linux Kernel 2.6.31的最简优化指南。作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核。 由于作者水平有限,如果描述错误,还请不吝指教。 运行环境 虚拟机 Virtualbox 3.1.4 CPU Core 2 Duo P9500 2.53G 双核 开启 vt-x, APIC 磁盘 虚拟 10G的SATA磁盘 内存 分了1G物理内存 网卡 虚拟 AMD PCNet32 100M 其他 USB,串口,显卡,声卡全关 作者是在虚拟机中编译的内核,如果你与作者的运行环境不同,则本文档中的部分描述可能会与你的实际情况有一定出入。 不过,相信大部分用户在看到选项释义时,能做出适合自己的选择。 说明 下列选项中,通过 "// " 注释的行 通过红色 "<===" 注释的行,代表内核默认开启,本文档推荐关闭的选项,释义部分会给出关闭的理由。
本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸等方式来进行的。
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 randomization
Choose 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 support
IO Schedulers ---> // IO调度器支持,不同程序可以会选用不同的调度策略,这里我们不要动他
<*> Anticipatory I/O scheduler
<*> Deadline I/O scheduler
<*> CFQ I/O scheduler
Default 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
[ ] Memtest
Processor 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 support
Preemption 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 support
High 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秒检查一次。一般这种脏数据是因某些Bios处理不当引起的。资料链接。我信任我目前的虚拟bios版本
[] Reserve low 64K of RAM on AMI/Phoenix BIOSen <=== 我不是 AMI/Phoenix BIOS
[ ] Math emulation
[ ] MTRR (Memory Type Range Register) support <=== 我没用 X windows
[ ] MTRR cleanup support
[ ] x86 PAT support <=== 我没用 X windows
[ ] EFI runtime service support <=== 我机器是BIOS引导的,用不到EFI(Extensible Firmware Interface),如果你有兴趣体验EFI,可以在Virtualbox中开启
[] Enable seccomp to safely compute untrusted bytecode <=== 只有嵌入式系统可以不选
[ ] Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)
Timer frequency (300 HZ) ---> <=== Server场景建议设为300hz,减少内核事件响应速度,提高程序吞吐量,桌面场景可以保持不变
[ ] kexec system call <=== 我没有运行时替换内核的需求
[ ] kernel crash dumps <=== 内核崩溃时,dump运行时信息。就算crash了,我也不会去调试内核的core dump
[ ] Build a relocatable kernel <=== 官方说明 (建立一个移动的内核,并增加10%的内核尺寸,运行时会被丢弃),我认为没实质性的作用
(0x1000000) Physical address where the kernel is loaded
[] Support for hot-pluggable CPUs <=== 热拔插CPU,我用不到
[ ] Compat VDSO support
[ ] Built-in kernel command line
Power management and ACPI options --->
[*] Power Management support
[ ] Power Management Debug Support <=== 不想调试ACPI
[ ] Verbose Power Management debugging
[ ] Suspend to RAM and standby <=== 我是用来跑server,一般不需要待机
[ ] Hibernation (aka 'suspend to disk') <=== 我是用来跑server,一般不需要休眠
[*] ACPI (Advanced Configuration and Power Interface) Support --->
[*] Deprecated /proc/acpi files
[*] Deprecated power /proc/acpi directories
[*] Future power /sys interface
[*] Deprecated /proc/acpi/event support
< > AC Adapter <=== 我不需要从AC与Battery之间做切换
< > Battery <=== 没有电池
< > Button <=== 没有Fn快捷键
-*- Video
<*> Fan
<*> Processor
<*> Thermal Zone
(0) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
< > PCI slot detection driver
< > Smart Battery System
CPU Frequency scaling --->
[*] CPU Frequency scaling
[ ] Enable CPUfreq debugging <=== 我不需要调试 CPUfreq
< > CPU frequency translation statistics
Default CPUFreq governor (performance) ---> <=== 默认用 performance高性能的CPU调频方式
<*> 'performance' governor
< > 'powersave' governor
<> 'userspace' governor for userspace frequency scaling <=== 既允许手动调整cpu频率,也允许用户空间的程序动态的调整cpu频率(需要额外的调频软件,比如cpufreqd) 我只用performance
<> 'ondemand' cpufreq policy governor <=== "周期性的考察CPU负载并自动的动态调整cpu频率",我只用 performance
<> 'conservative' cpufreq governor
*** CPUFreq processor drivers ***
<*> ACPI Processor P-States driver
< > AMD Mobile K6-2/K6-3 PowerNow!
< > AMD Mobile Athlon/Duron PowerNow!
< > AMD Opteron/Athlon64 PowerNow!
< > Cyrix MediaGX/NatSemi Geode Suspend Modulation
< > Intel Enhanced SpeedStep (deprecated)
< > Intel Speedstep on ICH-M chipsets (ioport interface)
< > Intel Pentium 4 clock modulation
< > Transmeta LongRun
< > VIA Cyrix III Longhaul
Bus options (PCI etc.) --->
[*] PCI support
PCI access mode (Any) --->
[*] PCI Express support
[*] Root Port Advanced Error Reporting support // 硬件驱动会负责发送错误信息
[ ] PCI Express ECRC settings control
< > PCIE AER error injector support
[*] Message Signaled Interrupts (MSI and MSI-X)
[ ] Enable deprecated pci_find_* API
[ ] PCI Debugging
< > PCI Stub driver
[*] Interrupts on hypertransport devices
[ ] PCI IOV support
[ ] ISA support
[ ] MCA support
< > NatSemi SCx200 support
[ ] One Laptop Per Child support
< > PCCard (PCMCIA/CardBus) support ---> <=== 一般笔记本电脑会配备PCCard接口(无线网卡之类的),看你的硬件和使用场景吧。虽然我也是NB,但我从来不用PCMCIA
< > Support for PCI Hotplug ---> <=== 我没有要热拔插PCI设备的需求
Executable file formats / Emulations --->
[*] Kernel support for ELF binaries
[*] Write ELF core dumps with partial segments
< > Kernel support for a.out and ECOFF binaries
<*> Kernel support for MISC binaries
[*] Networking support --->
Networking options --->
<*> Packet socket
[*] Packet socket: mmapped IO
<*> Unix domain sockets
<*> Transformation user configuration interface
< > PF_KEY sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH) --->
[*] IP: policy routing
[*] IP: equal cost multipath
[*] IP: verbose route monitoring
[ ] IP: kernel level autoconfiguration <=== 我很少用网络引导OS,内核级别的网络配置对我无用。
[ ] IP: DHCP support
[ ] IP: BOOTP support
[ ] IP: RARP support
< > IP: tunneling
< > IP: GRE tunnels over IP
[*] IP: multicast routing
[*] IP: PIM-SM version 1 support
[*] IP: PIM-SM version 2 support
[ ] IP: ARP daemon support
[ ] IP: TCP syncookie support (disabled per default) <=== 抵抗SYN flood攻击,我是开发机,暂不考虑安全特性
< > IP: AH transformation
< > IP: ESP transformation
< > IP: IPComp transformation
< > IP: IPsec transport mode
< > IP: IPsec tunnel mode
< > IP: IPsec BEET mode
[*] Large Receive Offload (ipv4/tcp)
< > INET: socket monitoring interface
[ ] TCP: advanced congestion control ---> <=== 高级拥塞控制,如果没有特殊需求(比如无线网络)就别选了
< > The IPv6 protocol ---> <=== 我暂时没有要支持IPV6的需求
[ ] NetLabel subsystem support <=== NetLabel子系统, 为诸如CIPSO与RIPSO之类能够在分组信息上添加标签的协议提供支持,我用不到
[ ] Security Marking <=== 对网络包进行安全标记,类似于nfmark,但主要是为安全目的而设计, 安全特性,我暂时不考虑
[ ] Network packet filtering framework (Netfilter) ---> <=== 我不打算使用防火墙,要用到时再编译进去
< > Asynchronous Transfer Mode (ATM)
< > 802.1d Ethernet Bridging
< > 802.1Q VLAN Support
< > DECnet Support
< > ANSI/IEEE 802.2 LLC type 2 Support
< > The IPX protocol
< > Appletalk protocol support
< > Phonet protocols family
[ ] QoS and/or fair queueing ---> <=== 通过IPRoute切换网络设备上的Qos策略,我不打算使用IP路由
[ ] Data Center Bridging support
Network testing --->
[ ] Amateur Radio support ---> <=== 我没有无线电
< > CAN bus subsystem support --->
< > IrDA (infrared) subsystem support --->
< > Bluetooth subsystem support --->
[ ] Wireless ---> <=== 我没有使用无线网卡
< > RF switch subsystem support ---> <=== 我没有RF切换设备
发表评论
-
linux 常见错误解决方法
2010-12-27 11:20 405410、pam 11、拒绝ssh登录(用户)a./etc/s ... -
理解 Linux 配置文件
2010-09-29 16:03 1450介绍 每个 Linux 程序都是一个可执行文件,它含 ... -
linux iscsi initiator 安装配置
2010-06-24 15:28 4376实现环境:vmware workstation, ... -
iscsi配置
2010-06-17 16:31 19861 指定连接iSCSI的前兆网口IP, 与IP-SAN的端口 ... -
Linux 2.6.31内核优化-2
2010-03-24 14:43 2455Device Drivers ---> Gene ... -
solaris 常用检查系统命令
2010-03-10 15:57 2386/usr/platform/sun4u/sbin/prt ... -
vsftpd配置文件
2010-02-09 16:23 1520vsftpd配置文件采用“#” ... -
solaris10 xmanager登录
2010-01-29 10:48 10141. 关闭默认的cde服务 ... -
ubuntu美化grub
2009-12-24 16:44 945安装grub-splashimages,只是集成了一套 ... -
linux内核参数
2009-12-21 15:58 1216以下是内核的主要配置 ... -
Consistent Non-Locking Reads 与Locking Reads的区别
2009-11-30 09:08 991一直以来,都认为mysql 在普通的select下会根据主键 ... -
大量LAST_ACK 分析过程
2009-11-30 09:06 18498现象:在netstat的时候发现大量处于LAST_ACK状态的 ... -
阵列Lun
2009-11-10 11:26 1203a、lun的概念 lun的全称是logical ... -
TAR命令参数详解
2009-11-05 09:58 2850tar 程序用于储存或展开 tar 存档文件。存档文件可放在磁 ... -
linux下无法在分区中创建新文件问题
2009-10-20 09:13 2889linux下无法在分区中创建新文件问题 故障现象: ... -
vim使用技巧
2009-10-09 14:09 2165读本文之前请注意: 1. 本文的目标是提供一些vim的使用技 ... -
基于linux构建一个多功能(防火墙/防毒墙/进出邮件扫描/GFW穿越)透明网关
2009-09-27 09:07 997基于linux 构建一个全功能(防火墙/防毒墙/进出邮件 ... -
Rhythmbox, Totem 不支持 mp3的解决办法
2009-09-08 11:01 1373为什么 Linux 不支持 mp3 呢?这个问题在 Linux ... -
LEMP构建高性能WEB服务器
2009-08-24 13:39 1154平台搭建环境 : CentOS5.2 32/x86_6 ... -
linux下安装fetion(飞信)
2009-08-18 10:55 27461.先去 http://www.libfetio ...
相关推荐
### Linux 2.6.31 内核编译指南详解 #### 一、Linux 2.6.31 版本概述 Linux 2.6.31 是一款广泛支持多种架构的操作系统核心,其发布标志着Linux内核在稳定性和功能上的进一步提升。这一版本不仅增强了对现有硬件的...
本教程“linux2.6.31 移植及详细教程方案”旨在为开发者提供一个详尽的指导,帮助他们将Linux 2.6.31内核移植到基于ARM的TX2440A开发板上。这个过程涵盖了从理解内核源码到配置、编译以及调试的整个流程,对于嵌入式...
而`ldd3 for 2.6.31`则是针对Linux 2.6.31内核版本进行优化和修改的版本,确保与新内核的兼容性。 动态链接器`ldd`是Linux系统中用于检查可执行文件依赖哪些共享库的工具,它能够帮助开发者理解程序运行时需要哪些...
随着时间的推移,Linux内核不断优化和完善,比如2.6.34版本添加了Ceph分布式文件系统和LogFS(适用于闪存设备的文件系统),同时改进了Btrfs文件系统,增强了性能和可靠性。 Linux内核的版本管理策略确保了开发者...
在AT91RM9200上移植Linux内核时,需要对内核进行裁剪和配置,以适应特定硬件的需求。这通常涉及到驱动程序的编写和编译,以确保内核能够正确识别和操作硬件。 文件系统是保存数据和程序的地方,对于嵌入式系统来说...
- 要卸载旧内核,例如`linux-headers-2.6.31-X-XX`和`linux-image-2.6.31-XX-XX`(X代表版本号),需要根据实际列出的完整名称来执行`sudo apt-get remove`命令。 - 在Ubuntu 9.10之前,卸载旧内核后,还需要...
Android内核是基于Linux内核的一个分支,具体而言,它基于Linux 2.6内核(当前版本为2.6.31),这一选择主要是为了利用Linux内核的强大功能和稳定性,同时进行必要的修改以适应Android平台设备的需求。这些修改包括...
描述中提到的“用来编译Linux2.6.31内核的,成功测试”,意味着这个工具链已经被用于构建Linux内核的特定版本——2.6.31。Linux内核是操作系统的核心部分,管理硬件资源、提供系统调用接口以及驱动程序等。版本...
操作系统选用Linux 2.6.31内核,与硬件的适配主要涉及外设驱动的修改。摄像头和LCD在Linux下表现为文件,可以通过标准的I/O函数进行操作。例如,通过ioctl设置摄像头参数,使用read读取摄像头数据,对LCD的参数设置...
自Linux内核版本2.6.31-rc1开始,kmemcheck 已被纳入主线内核。这意味着你可以直接从官方内核源码树中获取包含 kmemcheck 支持的内核源代码。 **2. 配置与编译** kmemcheck 只支持 x86 平台(包括32位和64位)。...
Ubuntu 9.10 使用的是Linux内核2.6.31,这个版本的内核支持动态加载和卸载模块,使得开发者无需重新编译整个内核就能添加或移除特定功能。本实验主要涉及两个核心概念:可加载内核模块和字符设备驱动,这两个概念是...
Perf是一个内置于Linux内核中的性能分析工具,它自Linux内核2.6.31版本起被集成到内核源码中。Perf可以用来评估Linux系统和程序的性能,它是对Linux系统进行性能调优的有力工具之一。Perf工具能够处理与性能相关的...
Android内核不仅修复了一些Linux内核的已知问题,还特别针对Android平台的特性进行了优化和扩展,主要体现在设备驱动程序的支持上。 首先,Android Binder驱动是Android系统进程间通信(IPC)的基础,位于`drivers/...
自Linux内核2.6.31以来,perf 已经成为开发者和系统管理员进行性能调优的重要助手。这个工具能够处理各种与性能相关的事件,包括硬件和软件层面的影响因素。 性能事件是指在处理器或操作系统中发生的、可能影响程序...
此外,需要准备合适的交叉编译器(如arm-linux-gcc 4.1.2),内核版本(如Linux-2.6.31)以及操作系统平台(如Linux Red Hat 9.0)和开发板平台(如TX2440A)。 **3. Qtopia手机平台移植步骤** **3.1 开始移植** ...
在 Linux 2.6 内核中,为了方便开发者编写 I2C 设备驱动程序,内核提供了一系列的接口函数。这些函数主要分为以下几类: - **初始化与注销函数**:用于初始化或注销 I2C 设备。 - **数据传输函数**:用于读取或写入...