linux最佳化

move8net發表於2007-06-27
linux最佳化[@more@]

一、開啟硬碟 DMA 支援。

系統安裝完畢後,硬碟的 DMA 是沒有開啟的,我的方法是在
/etc/rc.d/rc.local 最後面加上一行 /sbin/hdparm -d1 -c3 -m16 /dev/hda 這樣每次開機後,硬碟的 DMA 就會開啟,不必每次手動設定。

如果您的硬碟機支援 ATA33 可以加上 -X66 這個引數,ATA66則是 -X68,像我的硬碟是 ATA66 那麼完整引數就是 /sbin/hdparm -d1 -X68 -c3 -m16 /dev/hda 經過我的測試 ,在 DMA 未開啟以前,實際讀取效率是每秒約 4.10 Mb 左右,開啟 DMA 後,每秒實際讀取效率躍升為 20 Mb 大約提升 5 倍之多。

§未開啟 DMA 時的測試

[root@firefly /root]# hdparm -d0 /dev/hda

/dev/hda:

setting using_dma to 0 (off)
using_dma = 0 (off)

[root@firefly /root]# hdparm -Tt /dev/hda

/dev/hda:

Timing buffer-cache reads: 128 MB in 2.75 seconds = 46.55 MB/sec
Timing buffered disk reads: 64 MB in 15.58 seconds = 4.11 MB/sec

§開啟 DMA 後的測試結果

[root@firefly /root]# hdparm -d1 -X68 -c3 -m16 /dev/hda

/dev/hda:

setting 32-bit I/O support flag to 3
setting multcount to 16
setting using_dma to 1 (on)
setting xfermode to 69 (UltraDMA mode5)
multcount = 16 (on)
I/O support = 3 (32-bit w/sync)
using_dma = 1 (on)

[root@firefly /root]# hdparm -Tt /dev/hda/dev/hda:

Timing buffer-cache reads: 128 MB in 2.75 seconds = 46.55 MB/sec
Timing buffered disk reads: 64 MB in 3.20 seconds = 20.00 MB/sec

由以上的資料,可以看得出來,硬碟 DMA 是否開啟,對讀取效率影響很大。

二、關閉多餘的系統服務。

這是老生常談的題目了,一般我們當作桌上型工作站的時候,只需要啟用幾個基本的?Service 即可,其他的不但沒用,一方面會佔用系統資源,另一方面則會有安全上的顧慮,我平常只用來連網、打打檔案、聽聽音樂、看看電影,多半時間只是一個 Client 端,實在沒必要啟用 Server 端的服務,所以,我在 Setup System Services時,只留下以下幾個 Service,其餘的都關閉。

1. crond
2. network
3. syslogd

真的,相信我,只要這3個就足夠了!

三、下載 Kernel 重新程式設計。

因為系統所預設安裝的 Kernel 是為了適用大部分的計算機而做的,並未對你的計算機作最最佳化,所以顯得臃腫肥大,因為 Kernel 直接掌控著計算機的一切,所以對系統效率影響當然很大。

我的作法是∶下載最新的 Kernel 重新程式設計,將我計算機上的硬體直接程式設計進 Kernel 裡面,不要作成 Module ,對於不需要的就不程式設計,這樣,打造出完全面向自己環境的 Kernel ,才能完全發揮計算機的威力。

至於 Kernel 怎樣程式設計?這就不是我的主題了,大家可以到CLDP 自行參考 KERNEL HOW-TO 中譯版。

四、減少虛擬終端機的數量。

系統預設是6個,也就是 CTRL+ALT F1~F6 那六個,我關掉其中四個,只留下 CTRL+ALT F1~F2,大約省下 4 Mbytes 的記憶體,但是這樣一來,X-Window 會從原來的 CTRL+ALT F7 變成 CTRL+ALT F3 。

修改 /etc/inittab 中,將 mingetty 3 ~6 全部加上 # 字號,然後下指令 #init q

五、調整 X-Windows 環境

我習慣操作 KDE ,對 GNOME 不熟,所以,以下是都是面向 KDE而設,GNOME 的使用者,我想,應該也差不多啦!

1、顏色數設為 16 Bit 就有很好的效果了,24 Bit 除了浪費資源,看不出有何好處。
2、不要使用螢幕保護程式。
3、取消動畫視窗功能。
4、儘量使用同一種字型。
5、瀏覽器用 Mozilla 不要用 Netscape。
6、不要啟用音效伺服器 artd

Speed Up X by Managing Font Setting 在你抱怨 X 跑得不夠快之前,
先檢查字型設定, 很可能就是影響效能的一大元兇。
先看一下 /etc/X11/XF86Config-4 檔案裡的 FontPath 設定值, 如果是
如下∶
Section "Files"

RgbPath "/usr/X11R6/lib/X11/rgb"

# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X server to render fonts.

FontPath "unix/:-1"

EndSection

可參考 /etc/X11/fs/config 檔案裡的字型設定值, 挑選幾個喜歡的字型目錄(全部比較不會錯)
來修改, 例如我直接設定下列幾個字型目錄∶
Section "Files"

RgbPath "/usr/X11R6/lib/X11/rgb"

# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X server to render fonts.

FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/mdk:unscaled"
FontPath "/usr/share/fonts/ttf/big5"

EndSection

修改之後, 重新啟用 startx 感受看看棉。

原本的 FontPath "unix/:-1" 將字型由 X Font Server 來提供,
一般使用者未蒙其利、先受其害, 可以考慮等熟悉 X Font Server 功能後再使用。
如此就可以關掉xfs了
ps:試用時不要用預設開機直接進x-window,若不行會卡在x-window
ps:引用自~marr/xfont_tip.html
六、調整應用程式優先權。

一般時候,我們使用任何程式時,其 NICE 值都是 0,意思是CPU 的使用權值。如果我們常用程式有較高的優先權的話,自然效率就會比較好,優先權的值從 -20 到 19 ,數字越小優先權就越高,但要注意的是一般使用者只能調低( 0~19),只有 root 有權調高優先權( -20 ~ 19 )。我們可以用 ps -fel 來觀察 NI 那欄就知道。

說了半天,到底如何調整呢?有一個指令 /bin/nice 就是用來作這件事的,用法如下∶nice?-n?程式名稱?引數....
n 的值從 -20 到 19,這是手動操作,在 KDE 中,可以用選單編輯器來設定,方法是在你要調整優先權的程式的 [ 命令 ] 那一欄的前面,加上 /bin/nice --n 就可以了。

比方說我常用 Mozilla 來瀏覽網頁,我改成 /bin/nice --10 /usr/local/mozilla/mozilla 這樣我的 Mozilla 執行時,就比其他程式有更高的優先權,在實際測試的時候,Mozilla 啟用速度以及回應都快了不少,其他一些常用的程式,也可以比照辦理。

後記

Linux 真的是一套很棒的作業系統,經過這樣調整後,光是開機到登入視窗畫面出現,從原來的 48 秒,變成 30 秒,用 top 指令(每秒)觀察CPU idle 時間也從 82% 提升到 93%,而視窗程式的反應感覺上與 Win me 差不多了。

1 系統效能管理
1)響應時間(Response Time)
從使用者的角度來看,系統處於良好的效能狀態是指系統能夠快速響應使用者的請求,即系統響應時間短。
具體地說,響應時間是指發出請求的時刻到使用者的請求的相應結果返回使用者的時間間隔。
2)吞吐量(Throughput)
從系統管理員角度來看,系統的吞吐量成為系統處於良好的效能狀態的指標。
具體地說,吞吐量是在給定時間段內系統完成的交易數量。即系統的吞吐量越大,說明系統在單位時間內完成的使用者或系統請求越多, 系統的資源得到充分利用。
2 資源與瓶頸
1)系統資源(System Resource)
CPU
記憶體
磁碟
輸入輸出,尤其是網路和序列通訊
檢視系統資訊
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中斷
cat /proc/ioports - 裝置IO埠
cat /proc/meminfo - 記憶體資訊(i.e. mem used, free, swap size)
cat /proc/partitions - 所有裝置的所有分割槽
cat /proc/pci - PCI裝置的資訊
cat /proc/swaps - 所有Swap分割槽的資訊
cat /proc/version - Linux的版本號 相當於 uname -r
uname -a - 看系統核心等資訊
2)瓶頸(Bottleneck)
在計算機的眾多資源中,由於系統配置的原因,某種資源成為系統效能的瓶頸是很自然的事情。
當所有使用者或系統請求對某種資源的需求超過它的可用數量範圍時,我們稱這種資源成為瓶頸。
當系統出現瓶頸時,消除瓶頸是方法通常有兩種:
增加成為瓶頸的資源的數量;
減少請求的數量;

一些最佳化的措施
1開啟硬碟 DMA 支援。
系統安裝完畢後,硬碟的 DMA 是沒有開啟的,我的方法是在
/etc/rc.d/rc.local 最後面加上一行 /sbin/hdparm -d1 -c3 -m16 /dev/hda 這樣每次開機後,硬碟的 DMA 就會開啟,不必每次手動設定。
新增前後你可以用hdparm -Tt /dev/hda 來測試一下。
2執行ntsysv來關掉一些沒有必要的服務,下面也提供一些常見服務的具體解釋:
amd管理mixer裝置的
amidxtape
anacron(命令排程)
apmd(高階電源管理)
arpwatch(看ARP的)
atd (功能cron類似)
autofs(自動載入檔案系統)
daytime-udp(udp-使用者資料包協議,與之同級別的是TCP)
dhcpd(動態主機服務)
echo(伺服器回顯客戶資料服務)
echo-udp(UDP版本的echo)
finger(finger服務)
gated (閘道器服務)
gpm(控制檯下的滑鼠)
ipchains(防火牆)
linuxconf-web(開啟linuxconf的web配置埠)
netfs(網路檔案系統)
*network(提供網路支援)
pcmica(提供對pc卡的支援,一般筆記本用)
sendmail(大名鼎鼎的郵件伺服器)
keytable(鍵盤影射,好象沒有用)
KZUZU----啟動系統時檢測PC硬體
#我只留下了apmd gpm syslog network iptable 5個
3減少虛擬終端機的數量。
系統預設是6個,也就是 CTRL+ALT F1~F6 那六個,我關掉其中四個,只留下 CTRL+ALT F1~F2,大約省下 4 Mbytes 的記憶體,但是這樣一來,X-Window 會從原來的 CTRL+ALT F7 變成 CTRL+ALT F3 。
修改 /etc/inittab 中,將 mingetty 3 ~6 全部加上 # 字號

幾個對系統安全有好處的設定
1刪除所有的特殊賬戶
你應該刪除所有不用的預設使用者和組賬戶(比如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等)。
2開啟密碼的shadow支援功能:
開啟密碼的shadow功能,對password加密。使用"/usr/sbin/authconfig"工具開啟shadow功能。如果想把密碼和組轉變為shadow格式,可以分別使用"pwcov,grpconv"命令。
3、root賬戶
在unix系統中root賬戶是具有最高特權的。如果系統管理員在離開系統之前忘記登出root賬戶,系統會自動登出。透過修改賬戶中"TMOUT"引數,可以實現此功能。TMOUT按秒計算。編輯你的profile檔案(vi /etc/profile),在"HISTFILESIZE="後面加入下面這行:
TMOUT=3600
3600,表示60*60=3600秒,也就是1小時。這樣,如果系統中登陸的使用者在一個小時內都沒有動作,那麼系統會自動登出這個賬戶。你可以在個別使用者的".bashrc"檔案中新增該值,以便系統對該使用者實行特殊的自動登出時間。
改變這項設定後,必須先登出使用者,再用該使用者登陸才能啟用這個功能。
4禁止系統資訊暴露
當有人遠端登陸時,禁止顯示系統歡迎資訊。你可以透過修改"/etc/inetd.conf"檔案來達到這個目的。
把/etc/inetd.conf檔案下面這行:
telnet  stream  tcp     nowait root    /usr/sbin/tcpd  in.telnetd
修改為:
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd -h
在最後加"-h"可以使當有人登陸時只顯示一個login:提示,而不顯示系統歡迎資訊

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/161840/viewspace-921565/,如需轉載,請註明出處,否則將追究法律責任。

相關文章