广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4069 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
aa 手机 会员卡 葫芦墩家族
个人文章 个人相簿 个人日记 个人地图 个人商品
特殊贡献奖 社区建设奖
头衔:            
站长
级别: 站长 该用户目前不上站
推文 x1964 鲜花 x5260
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[FreeBSD] 关于FreeBSD 5优化的补充
转载自 http://www.cnfug.org/journa...000076.html

关于FreeBSD 5优化的补充

Neo-Match <neo_match@hotmail.com>

还记得上一次看到关于FreeBSD 5优化的文章是1年前,也是我刚刚起步学UNIX的时候。时间飞驶,在这一年里我学到了很多FreeBSD和UNIX的知识,我对FreeBSD如何性能最大化更是感兴趣。如今FreeBSD已经替代了我的Windows2000,成为我电脑里唯一个OS。经验秘笈不敢独享,在此愿跟所有FreeBSD发烧友切磋,如有不当之处,欢迎指出批评。

·本文假设读者已经阅读过FreeBSD安装手册。
·阅读本文时,请务必参考安装优化文章。
·本文遵循GPL协议。
·本文遵循BSDL协议。
·欢迎其他作者结合本文内容写出各种FreeBSD优化文章。

一、安装(sysinstall)

1、Distribution中,仅选择minimal后,选择Customization。添加man,出现问题时可以查看命令参数;添加src,之后cvsup可以加快速度,不必读取重复的文件。

2、Users中,添加用户后,把用户路径中的/home/abc改为/usr/abc。因为/usr的容量大。或者还可以通过增大/home的容量,不过比较麻烦。
然后,要把shell改为csh,为了使用方便(也为了本文第七部分的设置)。

二、编译优化(make.conf)

注意:要屏蔽某个boolean选项,并不是标记no或false!而是整行删掉!

1、编译器选项

CPUTYPE=athlon-xp
##本人使用AthlonXP 2500+,不同的CPU请参考man make.conf

CFLAGS+= -mfpmath=sse -mmmx -msse -m3dnow -maccumulate-outgoing-args
-minline-all-stringops
##
不建议使用O2、O3、Os的优化,因为不是全部应用程序可以稳定工作于O2、O3、Os。况且最多仅获得7%的额外性能。
## CFLAGS的默认为"-O1 -pipe",不需要覆盖,所以使用+=。
## 不建议使用-f...系列优化,因为不是全部应用程序可以对此稳定工作。

## -mfpmath=sse:
PentiumIII兼容的CPU可以打开-mfpmath=sse来代替传统i387的浮点运算,加快速度。参阅CPU产品手册来确定CPU是否含有SSE功能。
## -mfpmath=pni: Pentium4
Prescott兼容的CPU可以打开-mfpmath=pni来代替传统i387的浮点运算,加快速度。参阅CPU产品手册来确定CPU是否含有PNI功能。
## -mmmx:
打开mmx指令来增加代码性能。参阅CPU产品手册来确定CPU是否含有MMX功能。适用于PentiumMMX兼容CPU。
## -msse:
打开sse指令来增加代码性能。参阅CPU产品手册来确定CPU是否含有SSE功能。适用于PentiumIII兼容CPU。
## -msse2:
打开sse2指令来增加代码性能。参阅CPU产品手册来确定CPU是否含有SSE2功能。适用于Pentium4兼容CPU。
## -mpni:
打开pni指令来增加代码性能。参阅CPU产品手册来确定CPU是否含有PNI功能。适用于Pentium4
Prescott兼容CPU。
## -m3dnow:
打开3DNow!指令来增加代码性能。参阅CPU产品手册来确定CPU是否含有3DNow!功能。适用于K6、Athlon兼容CPU。


## -maccumulate-outgoing-args -minline-all-stringops
通过减少某些动作来实现加速,经作者实验,比较稳定。

CXXFLAGS+= -fmemoize-lookups -fsave-memoized
## make.conf提到的C++代码优化。

2、系统编译选项
KERNCONF=(FILENAME)
## 内核配置文件名,将(FILENAME)更改为自己的内核文件名。

NOINET6=true
## 尽量不使用用IPV6协议。

NOATM=true
## 尽量不使用ATM,本选项仅适用于非ADSL用户。

NO_SENDMAIL=true
## 尽量不使用SENDMAIL。

NOGAMES=true
## 不安装所有游戏

NO_I4B=true
## 尽量不使用ISDN For BSD。

NO_IPFILTER=true
## 尽量不使用IP Filter。

BATCH=yes
## 安静编译,编译时跳过所有提问。适用于某些隔夜一次性编译程序的用户。

3、X-Window编译选项
XFREE86_VERSION=4
## 尽量使用4.3版本的X-Window

WITH_SETUID_LUIT=yes
## 不使用本项的话,运行xterm会出现luit错误的问题.

WITH_GTK2=yes
## 尽量使用GTK2为gtk应用程序的运行库

USE_MMX_ASM=yes
## 编译Xfree86时,尽量使用MMX代码,仅适用于PentiumMMX兼容CPU.

USE_3DNOW_ASM=yes
## 编译Xfree86时,尽量使用3DNOW代码,仅适用于K6、Athlon兼容CPU.

WITHOUT_KDE_MENUS=yes
## 使用GNOME时,不添加KDE程序在菜单上。

4、多媒体编码选项


WITH_CDPARANOIA=yes
WITH_AALIB=yes
WITH_ESOUND=yes
WITH_FAAD=yes
WITH_FLAC=yes
WITH_FREETYPE=yes
WITH_GDKPIXBUF=yes
WITH_GSM=yes
WITH_HERMES=yes
WITH_JPEG=yes
WITH_LADSPA=yes
WITH_LAME=yes
WITH_LIBA52=yes
WITH_LIBAUDIOFILE=yes
WITH_LIBCACA=yes
WITH_LIBFAME=yes
WITH_LIBMIKMOD=yes
WITH_LIBMPEG2=yes
WITH_LIBMUSICBRAINZ=yes
WITH_LIBSHOUT=yes
WITH_LIBSIDPLAY=yes
WITH_LIBSNDFILE=yes
WITH_LIBTHEORA=yes
WITH_MAD=yes
WITH_NAS=yes
WITH_PANGO=yes
WITH_PNG=yes
WITH_SDL=yes
WITH_SMOOTHWAVE=yes
WITH_SPEEX=yes
WITH_SWFDEC=yes
WITH_VORBIS=yes
WITH_VORBISIDEC=yes
WITH_XINE=yes
WITH_XVID=yes


## 以上所有多媒体选项仅在应用程序支持时打开。

4、应用程序编译选项
WANT_HUGE_STACK_SIZE=yes
## 为Python代码的应用程序提供巨大的Stack。

WITH_GDM=yes
## 为某些窗口管理器提供GDM链接。

WITHOUT_MAILNEWS=yes
## 取消Mozilla的邮件新闻功能,加快编译时间。

WITHOUT_COMPOSER=yes
## 取消Mozilla的网页编辑功能,加快编译时间。

WITHOUT_LDAP=yes
## 取消Mozilla的LDAP功能,加快编译时间。

WITHOUT_CHATZILLA=yes
## 取消Mozilla的IRC聊天功能,加快编译时间。

WITHOUT_XMLTERM=yes
## 取消Mozilla的XML终端功能,加快编译时间。

#WITH_RTC=yes
## 为某些应用程序提供实时时钟支持,但可能会造成某些多媒体程序不稳定。

WITH_GLX=yes
## 为某些应用程序提供GLX加速绘图支持。

WITH_TTF_BYTECODE_ENABLED=yes
## 为某些应用程序提供双字节支持。

WITH_OPTIMIZED_CFLAGS=yes
WITH_OPTIMIZED_CXXFLAGS=yes
WITH_OPTIMIZE=yes
## 尽量使用更高级编译优化

三、内核优化(make kernel)

options PQ_HUGECACHE
## 为1024k二级缓存的CPU提供支持

options PQ_LARGECACHE
## 为512k二级缓存的CPU提供支持

options PQ_MEDIUMCACHE
## 为256k二级缓存的CPU提供支持

options PQ_SMALLCACHE
## 为128k二级缓存的CPU提供支持

options CPU_ATHLON_SSE_HACK
options CPU_ENABLE_SSE
## 为Athlon系列CPU提供SSE支持

options CPU_SUSP_HLT
## 打开CPU空闲节能。

options CPU_UPGRADE_HW_CACHE
options CPU_WT_ALLOC
options NO_MEMORY_HOLE
## AMD系列CPU优化

##
某些显卡可以打开DRM支持来加快显示速度,请参考/usr/src/sys/conf/NOTES和/usr/src/sys/i386/conf/NOTES,本文省略。


四、启动优化(loader.conf)

autoboot_delay="2"
## 设置启动等待时间为2秒。

hw.ata.atapi_dma=1
## 打开ATA33以上接口的硬盘的DMA传输,加快存取速度。

kern.ipc.maxsockets="16384"
## 增大线程间套接数量

net.inet.tcp.tcbhashsize="2048"
## 增大TCP控制块数量

beastie_disable="YES"
## 关闭小恶魔图像启动菜单

五、系统首选项(rc.conf)

background_dhclient="YES"
## 不等待DHCP执行完毕,加快启动速度。

keyrate="fast"
## 最大化键盘速率

sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
## 关闭SENDMAIL

clear_tmp_enable="YES"
## 按时清除/var/tmp文件

tcp_extensions="YES"
## 扩展TCP

六、系统资源优化(sysctl.conf)

security.bsd.see_other_uids=0
## 不允许用户看到所有系统进程

kern.ipc.maxsockbuf=8388608
## 线程套接字缓冲区

kern.ipc.shm_use_phys=1
## 仅为线程提供物理内存支持,需要256兆以上内存。

kern.ipc.shmmax=67108864
## 线程可使用的最大共享内存

kern.ipc.shmall=32768
## 最大线程数量

kern.coredump=0
## 程序崩溃时不记录

net.local.stream.sendspace=65536
net.local.stream.recvspace=65536
## 本地数据流接收和发送空间

net.local.dgram.maxdgram=16384
## 本地数据包最大数量

net.local.dgram.recvspace=65536
## 本地数据包接收空间

net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1
## 某些加快网络性能的协议,请参考RFC文章。

net.inet.tcp.mssdflt=1460
## 数据包数据段大小,ADSL为1452。

net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=1048576
## 网络数据接收和发送空间

net.inet.tcp.inflight_enable=1
## 为网络数据连接时提供缓冲

net.inet.tcp.minmss=1460
## 数据包数据段最小值,ADSL为1452。

net.inet.raw.maxdgram=65536
## 本地数据最大数量

net.inet.raw.recvspace=65536
## 本地数据流接收空间

七、环境设置(.cshrc)
alias ls ls -GF
## 彩色化ls

setenv EDITOR ee
## 默认编辑器为ee

setenv PAGER less
## 默认分页器为less,比more要方便。

set nobeep
set prompt = '%n@%/%# '
set filec
set autolist
##
这几行设置我先不解释,不过我相信你肯定喜欢,自己去研究那是什么吧。特别是最后一行。

八、编译的缓存(ccache)
CCACHE是为程序编译提供缓存,通过减少重复代码编译次数,加快编译时间。

安装过程:


su
cd /usr/ports/devel/ccache/
make install clean
cd /usr/
mkdir ccache
cd /usr/sbin
ln -s /usr/local/bin/ccache gcc
ln -s /usr/local/bin/ccache cc
ln -s /usr/local/bin/ccache c++
ln -s /usr/local/bin/ccache g++
ln -s /usr/local/bin/ccache cpp
echo "setenv CCACHE_DIR /usr/ccache" >> /root/.cshrc
rehash
exit


最后可以通过运行ccache -s来观看当前编译状况。
好了,现在就可以cvsup系统代码和ports tree了。还不赶快开始编译你的FreeBSD 5?


注:任何转载或摘抄请保留作者信息和注明文章出处(中文FreeBSD用户组 http://www.c....org)


相关评论

--------------------------------------------------------------------------------

TOLLY 在 May 12, 2004 01:14 PM 说道:
六、系统资源优化(rc.conf)
是否应该为?:
六、系统资源优化(sysctl.conf)


--------------------------------------------------------------------------------

Neo-Match 在 May 12, 2004 01:44 PM 说道:
是的,应该为sysctl.conf。

还有,WITH_RTC=yes可能会造成某些多媒体程序不稳定!请注释掉!


--------------------------------------------------------------------------------

Neo-Match 在 May 12, 2004 01:46 PM 说道:
另外,如果在普通的用户环境下设置CCACHE_DIR=/usr/ccache,不用进入超级用户模式就可以观察当前编译情况。


--------------------------------------------------------------------------------

Matthew 在 May 12, 2004 04:08 PM 说道:
好的,我把文章修改一下,感谢大家的意见。


--------------------------------------------------------------------------------

i2era 在 May 12, 2004 08:06 PM 说道:
刚装完的系统没有/home,可以建个/usr/home,然后ln -s /usr/home /home


--------------------------------------------------------------------------------

newauh 在 May 12, 2004 08:53 PM 说道:
sysctl.conf 好像有点问题
我改了后 ssh 登陆不上去了


--------------------------------------------------------------------------------

Gavin Mu 在 May 12, 2004 09:25 PM 说道:
make.conf 中的
NO_SENDMAIL=true
## 尽量不使用SENDMAIL。
是这个含义么?如果这样的话,系统安装不是没有 sendmail 了?我的感觉应该是 make world 的时候不重新编译 sendmail。
不是很确定,呵呵。


--------------------------------------------------------------------------------

Neo-Match 在 May 12, 2004 10:01 PM 说道:
欢迎大家提意见。大家一起修改拉,哈哈!


--------------------------------------------------------------------------------

Neo-Match 在 May 12, 2004 10:08 PM 说道:
"ls -GF"改成 "ls -FGw",可以帮助显示中文。

还有,sysctl.conf修改后不能登陆SSH的情况我还没有遇到,等我在做几个测试。哪位朋友有建议的话,希望告诉我一下。


--------------------------------------------------------------------------------

Neo-Match 在 May 12, 2004 10:13 PM 说道:
关于sysctl.conf修改后不能登陆SSH的情况。我公布一下我的sysctl.conf和loader.conf,看有没有帮助。因为我的内存是1GB,所以有些设置的数值有点偏大。可以尝试减小一下试试。

#sysctl.conf
security.bsd.see_other_uids=0
kern.ipc.maxsockbuf=8388608
kern.ipc.shm_use_phys=1
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
kern.coredump=0
net.local.stream.sendspace=65536
net.local.stream.recvspace=65536
net.local.dgram.maxdgram=16384
net.local.dgram.recvspace=65536
net.inet.ip.intr_queue_maxlen=100
net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1
net.inet.tcp.mssdflt=1460
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=1048576
net.inet.tcp.inflight_enable=1
net.inet.tcp.minmss=1460
net.inet.raw.maxdgram=65536
net.inet.raw.recvspace=65536
vm.defer_swapspace_pageouts=1
vm.disable_swapspace_pageouts=1
vfs.usermount=1

#loader.conf
autoboot_delay="2"
hw.ata.atapi_dma=1
kern.ipc.maxsockets="16384"
kern.ipc.nmbclusters="65536"
kern.ipc.nmbufs="1024768"
kern.ipc.nsfbufs="16384"
net.inet.tcp.tcbhashsize="16384"
beastie_disable="YES"


--------------------------------------------------------------------------------

Gavin Mu 在 May 12, 2004 10:38 PM 说道:
又想到一个问题,很关键哦,嘿嘿
就是 make kernel 和 make world 时候的优化,应该和平时的是不一样的,作者有没有类似的经验呢?呵呵。


--------------------------------------------------------------------------------

Neo-Match 在 May 12, 2004 11:06 PM 说道:
你说的那是COPTFLAG,是关于kernel的,所以我没有改动。
那个参数最好不要优化,会造成系统不稳定。


--------------------------------------------------------------------------------

jeffgao 在 May 13, 2004 03:27 AM 说道:
在kernel的配置文件里可以加上这一行。
makeoptions COPTFLAGS="-O2 -pipe -funroll-loops -ffast-math"
我实际的测试,在FreeBSD 5.2.1-RELEASE上以这样的参数编译的kernel没有问题


--------------------------------------------------------------------------------

jeffgao 在 May 13, 2004 03:29 AM 说道:
此外,可以执行
ln -sf aj /etc/malloc.conf
这样,在5.x上的malloc性能会有提高。


--------------------------------------------------------------------------------

Neo-Match 在 May 13, 2004 03:58 AM 说道:
我也试过"-O2"和"-ffast-math"到COPTFLAG,但是偶然会出现崩溃,所以没有使用。


--------------------------------------------------------------------------------

Neo-Match 在 May 13, 2004 04:14 AM 说道:
malloc的debugging选项在5.1以上的版本就已经disable了。


--------------------------------------------------------------------------------

Neo-Match 在 May 13, 2004 04:23 AM 说道:
jeffgao,你是University of Calgary么?
我在University of Waterloo,在安达略省。


--------------------------------------------------------------------------------

Neo-Match 在 May 13, 2004 07:43 AM 说道:
#这是我的make.conf:

## Compiler Options
CPUTYPE=athlon-xp
CFLAGS+= -mfpmath=sse -mmmx -msse -m3dnow -maccumulate-outgoing-args -minline-all-stringops
CXXFLAGS+= -fmemoize-lookups -fsave-memoized

## System Options
KERNCONF=MACHINE
NOINET6=true
NOATM=true
NO_SENDMAIL=true
NOGAMES=true
NO_I4B=true
NO_IPFILTER=true
NO_LPR=yes
BATCH=yes

## X Options
XFREE86_VERSION=4
WITH_SETUID_LUIT=yes
WITH_GTK2=yes
USE_X86_ASM=yes
USE_MMX_ASM=yes
USE_3DNOW_ASM=yes
WITHOUT_KDE_MENUS=yes

## Multimedia Options
WITH_CDPARANOIA=yes
WITH_AALIB=yes
WITH_ESOUND=yes
WITH_FAAD=yes
WITH_FLAC=yes
WITH_FREETYPE=yes
WITH_GDKPIXBUF=yes
WITH_GSM=yes
WITH_HERMES=yes
WITH_JPEG=yes
WITH_LADSPA=yes
WITH_LAME=yes
WITH_LIBA52=yes
WITH_LIBAUDIOFILE=yes
WITH_LIBCACA=yes
WITH_LIBFAME=yes
WITH_LIBMIKMOD=yes
WITH_LIBMPEG2=yes
WITH_LIBMUSICBRAINZ=yes
WITH_LIBSHOUT=yes
WITH_LIBSIDPLAY=yes
WITH_LIBSNDFILE=yes
WITH_LIBTHEORA=yes
WITH_MAD=yes
WITH_NAS=yes
WITH_PANGO=yes
WITH_PNG=yes
WITH_SDL=yes
WITH_SMOOTHWAVE=yes
WITH_SPEEX=yes
WITH_SWFDEC=yes
WITH_VORBIS=yes
WITH_VORBISIDEC=yes
WITH_XINE=yes
WITH_XVID=yes
WITH_SVGALIB=yes
WITH_REALPLAYER=yes

## Application Options
WANT_HUGE_STACK_SIZE=yes
WITH_GDM=yes
WITHOUT_MAILNEWS=yes
WITHOUT_COMPOSER=yes
WITHOUT_LDAP=yes
WITHOUT_CHATZILLA=yes
WITHOUT_XMLTERM=yes
WITH_GLX=yes
WITH_TTF_BYTECODE_ENABLED=yes
WITH_OPTIMIZED_CFLAGS=yes
WITH_OPTIMIZED_CXXFLAGS=yes
WITH_OPTIMIZE=yes
WITHOUT_RUNTIME_CPUDETECTION=yes
CUPS_OVERWRITE_BASE=yes
WITH_GNUTLS=yes

## Perl Options
PERL_VER=5.6.1
PERL_VERSION=5.6.1
PERL_ARCH=mach
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo


[ 此文章被andyz在2005-05-18 20:14重新编辑 ]



献花 x0 回到顶端 [楼 主] From:台湾数位联合 | Posted:2005-04-30 10:22 |
whong168 手机
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x53
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

太感动了
虽然有部份看不懂
但以后慢慢看了
谢谢你 表情


百花丛里过
  片叶不沾身
无所从来
  亦无所去

献花 x0 回到顶端 [1 楼] From:台湾教育部 | Posted:2005-06-03 16:20 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.064379 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言