Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1392224
  • 博文数量: 146
  • 博客积分: 1440
  • 博客等级: 少尉
  • 技术积分: 2996
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-24 23:47
个人简介

我一直在走,至少还有条路,也好于无路可走…

文章分类

全部博文(146)

文章存档

2024年(1)

2023年(1)

2017年(2)

2016年(5)

2015年(13)

2014年(13)

2013年(70)

2012年(41)

分类: LINUX

2013-03-01 11:38:12

                     kernel编译与优化
编译内核的步骤:
1.清除旧目标文件和配置(make mrproper)
2.配置内核选项  ①文本配置界面(make confi)②文本菜单界面(make menuconfig)③图形界面make xconfi编译前的操作#yum install qt qt-deve)
推荐使用:文本菜单方式(make menuconfig)
菜单选项功能,根据生产环境进行配置:

我们以kernel-3.6.0为例:

图形:

                 General setup  --->                          # 普通安装                                                        
             [*] Enable loadable module support  --->         # 是否支持外挂模块的功能                                
             -*- Enable the block layer  --->                 #块设备                                  
                 Processor type and features  --->            #cpu的类型和功能(主要修改选项)
Processor type and features:子菜单:
                                     Processor family (Generic-x86-64):选择cpu的类型
                 Power management and ACPI options  --->      #电源管理                                  
                 Bus options (PCI etc.)  --->                 #pci总线的配置                                  
                 Executable file formats / Emulations  --->   #可执行二进制文件格式                                   
             -*- Networking support  --->                     #网络配置                                  
                 Device Drivers  --->                         #驱动                                 
                 Firmware Drivers  --->                       #固件驱动
                 File systems  --->                           #文件系统                                  
                 Kernel hacking  --->                         #内核debug                                 
                 Security options  --->                       #安全相关选项                                 
             -*- Cryptographic API  --->                      #加密api                                  
             [*] Virtualization  --->                         #校验码选项                                  
                 Library routines  --->                                                         
                 Load an Alternate Configuration File                                           
                 Save an Alternate Configuration File
3.编译内核(make)
4.编译内核模块(make modules)
5.安装内核模块(make modules_install)
6.安装新内核(make install)
                              【常用kernel参数的优化】
小知识:
  忽略ping  echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
  允许ping  sysctl -w net.ipv4.icmp_echo_ignore_all
  永久生效 echo net.ipv4.icmp_echo_ignore_all = 1 >>/etc/sysctl.conf
  内存参数:
  ls /proc/sys/kernel/shmmax
1.共享内存参数: 
  sysctl -a |grep shm
  vm.hugetlb_shm_group = 0
  kernel.shmmnl = 4096      #可用的最大的共享内存段(单位:段)
  kernel.shmall = 2097152   #可以使用的内存(单位:页)
  kernel.shmmax = 33554432  #一个共享内存段里最多可以使用的大小(默认:32M)
  调整内存段的大小:
  echo kernel.shmmax=2147483648   >>/etc/sysctl.conf #调整内存段的大小为2G
2.信号量优化:
    sysctl -a |grep sem
  # 集合数#可用的最多信号量 #每个信号量可用的操作数 #每一个集合里德信号量
  kernel.sem = 250            32000   128   128 #根据生产环节进行适量调整
  echo  kernel.sem = 250            32000   128   128 >>/etc/sysctl.conf
3.文件的句柄(同时打开的文件个数)
  cat /proc/sys/fs/file-max
  #默认  32767        #最多打开的文件数
  查看系统的文件句柄数的使用情况:
  cat /proc/sys/fs/file-nr
  #初始化分配的句柄数 #目前系统正在使用的句柄数 #最大句柄数     
  256   0    32767          #当前使用的文件句柄数接近最大值需要改动句柄值
  echo fs.file-max=65536 >>/etc/sysctl.conf #最多支持打开65536个文件
4.缓冲区队列
  sysctl -a |grep mem
  vm.overcommit_memory = 0
  vm.nr_hugepages_mempolicy = 0
  vm.lowmem_reserve_ratio = 256 256 32
  vm.memory_failure_early_kill = 0
  vm.memory_failure_recovery = 1
  net.core.wmem_max = 229376
  net.core.rmem_max = 229376
  net.core.wmem_default = 229376
  net.core.rmem_default = 229376
  net.core.optmem_max = 20480
  net.ipv4.igmp_max_memberships = 20
  net.ipv4.tcp_mem = 20358 27144 40716    #整个系统的缓冲区单位(页面x4096)#最小缓冲4kb          #平均值 #最大值
  net.ipv4.tcp_wmem = 4096 16384 868608   #发送缓冲区#最小缓冲4kb          #平均值 #最大值
  net.ipv4.tcp_rmem = 4096 87380 868608   #接受缓冲区#最小缓冲4kb          #平均值 #最大值
  net.ipv4.udp_mem = 20358 27144 40716
  net.ipv4.udp_rmem_min = 4096
  net.ipv4.udp_wmem_min = 4096
  根据生产环境进行调整
  echo net.ipv4.tcp_mem = 20358 27144 40716 >>/etc/sysctl.conf 
  echo net.ipv4.tcp_wmem = 4096 16384 868608 >>/etc/sysctl.conf
  echo net.ipv4.tcp_rmem = 4096 87380 868608 >>/etc/sysctl.conf
  echo net.ipv4.udp_mem = 20358 27144 40716 >>/etc/sysctl.conf
syn缓冲区:
net.ipv4.tcp_max_syn_backlog=2048  #缓冲区域大小
net.ipv4.tcp_synack_retries=3      #syn重试次数
net.ipv4.tcp_syn_retries=3         #syn重试次数
























阅读(4317) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~