廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4073 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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.084528 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言