CentOS安装配置之编译参数优化

一般情况下,优化参数都是通过export命令设定CFLAGS和CXXFLAGS,然后configure的时候会自动读入,make的时候会自动使用所选的优化参数。通过添加优化参数,让程序针对某个CPU型号和某个系统进行最大优化,减少文件大小、CPU使用率、内存使用率。优化后的程序,将不再具有跨系统跨平台的能力。
        首先查看CPU信息,然后根据CPU信息到http://gentoo-wiki.com/Safe_Cflags去获取CPU优化参数。如果打不开,可以在http://www.proxyie.cn/输入http://gentoo-wiki.com,打开后点左侧栏的搜索,输入cpu。
Intel:http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel
AMD:http://en.gentoo-wiki.com/wiki/Safe_Cflags/AMD

在控制台输入cat /proc/cpuinfo |more 查看CPU信息

processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 15
model name    : Intel(R) Xeon(R) CPU           E5330  @ 2.13GHz
stepping    : 7
cpu MHz        : 2127.908
cache size    : 4096 KB
physical id    : 0
siblings    : 4
core id        : 0
cpu cores    : 4
apicid        : 0
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
bogomips    : 4258.99
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

由于服务器model name 是Intel(R) Xeon(R) CPU,model是15
cflags     
[root@localhost ~]# export CHOST="i686-pc-linux-gnu"
[root@localhost ~]# export CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
[root@localhost ~]# export CXXFLAGS="${CFLAGS}"
[root@localhost ~]# env

 

修改描述符参数值
文件描述符用来限制一个程序能同时打开的文件数目,默认是1024。也就是说,如果不修改文件描述符,那么一个程序只能同时打开1024个文件,而Squid会同时打开成千上万个文件,所以远远是不够的,为了保证最高的效率和响应速度,要更改文件描述符的大小.
两种情况:a.用户每次访问squid,squid会按照需要打开文件,然后读取文件内容再返回给用户。
b.squid预先打开访问频率高的文件,用户访问squid,squid直接把内容返回给用户。相对来说,后面的方法可以对用户的请求进行更加快的反应。
首先修改以下两个文件。
/usr/include/bits/typesizes.h
/usr/include/linux/posix_types.h
用vi打开上面的文件查找
#define __FD_SETSIZE 1024
把1024改为65536,然后保存,这是Linux能接受的最大数值。

刚才编辑的这两个文件是C/C++程序里面的头文件,编译squid的时候会被自动引用。除了这两个文件以外,我们还需要对当前环境进行设置。也就是你用ssh登录到系统时的一些设定。每个登录进程都可以进行单独的设置,当关闭目前登录回话,环境变量的设置就失效了.
ulimit用来设置当前环境的一些资源限制。这个命令是对环境进行设置,所以退出当前登录进程后命令将会失效。
我们输入下面的命令
[root@localhost ~]# ulimit -Hs 65536
[root@localhost ~]# ulimit -n 65536
也可以永久修改这些限制,开机自动生效,配置如下:
vi /etc/security/limits.conf,
添加以下内容
*                soft   nofile          65536
*                hard   nofile          65536
H参数是硬性限制,s是堆栈上限,n是文件描述符上限。
注释:
ulimit 参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes

修改/proc/sys/net/ipv4/ip_conntrack_max为65535
或者是/etc/sysctl.conf中加入ip_conntrack_max=65535

下一步,使用这个命令增加内核文件描述符的限制:
# echo 65535 > /proc/sys/fs/file-max

posted @ 2010-04-09 11:06  刘光明  阅读(419)  评论(0编辑  收藏  举报