Ubuntu 進階優化和調校

出自Ubuntu 正體中文 Wiki

(修訂版本間差異)
跳轉到: 導航, 搜尋
(新頁面: ==前言== Ubuntu 作為一個使用者親和力高的作業系統,在設計上就是希望"越少手動調校越好",因此需要考慮到系統的泛用性,必須以"最廣大的...)
第6行: 第6行:
'''因本文提及的優化動作會牽涉到系統變更,也有可能造成系統無法正常工作,因此請在動作執行前,備份重要檔案。'''
'''因本文提及的優化動作會牽涉到系統變更,也有可能造成系統無法正常工作,因此請在動作執行前,備份重要檔案。'''
 +
==加速EXT3檔案系統==
==加速EXT3檔案系統==
第72行: 第73行:
重新啟動系統。
重新啟動系統。
sudo reboot now
sudo reboot now
 +
第97行: 第99行:
sudo sysctl -p
sudo sysctl -p
 +
 +
==關掉ipv6==
==關掉ipv6==
第107行: 第111行:
[[圖片:Bad list ipv6.png]]
[[圖片:Bad list ipv6.png]]
 +
 +
 +
==使用readahead==
 +
 +
在一兩年前,Linux 核心尚缺乏一個好的的硬碟預讀機制時,桌面系統的使用者若要加速開機的速度,通常得先解決磁碟存取速度的瓶頸問題。於是得依賴如 readahead 這樣的工具來預先載入想讀入的檔案,以便提高系統載入的速度。
 +
 +
詳見: http://people.debian.org.tw/~chihchun/2008/09/09/readahead-on-eeepc/
 +
 +
安裝:
 +
 +
sudo apt-get install readahead
 +
 +
不用設定,但Grub需要做Profile,請依照下列步驟:
 +
==Grub Profile==
==Grub Profile==
第124行: 第142行:
Enter, ESC退出,同一行按"b"繼續開機,'''這次開機會很花時間''',以後就不需要再做一次 (除非 之後有大量移除、新增套件、服務、以及更新kernel)
Enter, ESC退出,同一行按"b"繼續開機,'''這次開機會很花時間''',以後就不需要再做一次 (除非 之後有大量移除、新增套件、服務、以及更新kernel)
 +
 +
==使用localepurge清除不需要的語言檔==
==使用localepurge清除不需要的語言檔==
第209行: 第229行:
'''警告:無用翻譯在清除後無法還原,若使用後造成系統損壞,作者並不負責。'''
'''警告:無用翻譯在清除後無法還原,若使用後造成系統損壞,作者並不負責。'''
 +
 +
 +
== 使用Preload ==
 +
 +
Preload可以在背景監控你最常用哪些程式,然後事先把那些程式載入快取,這樣當你要執行這些程式時,就可以快速啟動。 ("感覺上"應用程式啟動速度會增快)
 +
 +
安裝
 +
sudo apt-get install preload
 +
 +
不用設定
 +
 +
 +
== 使用Prelink ==
 +
 +
prelink 是加快 ELF shared libraries/executables 的載入速度,不算是檔案快取,可以提升應用程式的啟動速度:
 +
 +
安裝
 +
sudo apt-get install prelink
 +
 +
 +
其中參數代表
 +
 +
a 對/etc/prelink.conf 中所紀錄的全部位址進行prelink
 +
v 顯示正在處理的內容
 +
m 節省記憶體,他可以讓兩個不會被同時使用的函式庫共用同樣的虛擬位址
 +
R 分配亂數位址,能減輕緩存溢位攻擊的狀況
 +
 +
此外在debian及ubuntu下都已有設定檔可定時執行,
 +
 +
sudo gedit /etc/default/prelink
 +
加入
 +
PRELINKING=yes
 +
 +
已有/etc/cron.daily/prelink,如此便會由cron自動執行,除了第一次時間很長外,
 +
 +
後續應該速度都很快,除非你upgrade整個系統所有檔案。
 +
 +
在硬體配備較差的機器上,Prelink所有檔案並不是個好主意,因此可以用手動處理prelink,只針對某些應用做Prelink
 +
 +
可以下如此參數
 +
 +
sudo prelink -avmR
 +
 +
範例: 只針對 Firefox做prelink
 +
 +
sudo prelink -Rm /usr/lib/firefox-3.0.3
 +
 +
範例: 加入開機自動執行:
 +
 +
sudo gedit /etc/init.d/prelinkfx.sh
 +
 +
加入:
 +
 +
#!/bin/sh
 +
sudo prelink -Rm /usr/lib/firefox-3.0.3
 +
 +
加入開機指令稿
 +
 +
sudo update-rc.d prelinkfx.sh defaults

在2008年11月7日 (五) 14:51所做的修訂版本

目錄

前言

Ubuntu 作為一個使用者親和力高的作業系統,在設計上就是希望"越少手動調校越好",因此需要考慮到系統的泛用性,必須以"最廣大的使用者群"作為優先考量,其中有些功能都需要較多的硬體資源。

實際上,根據國外Benchmark評測的結果,預設的Ubuntu效能已經不差,以今日的電腦配備來執行它已是綽綽有餘,所以不需要再特別做調整,但如果有需要的人,仍然可以嘗試對它做進階的優化、加速。

因本文提及的優化動作會牽涉到系統變更,也有可能造成系統無法正常工作,因此請在動作執行前,備份重要檔案。


加速EXT3檔案系統

  • 注意1: 此設定只適合ext3格式的磁碟分割
  • 注意2: 此設定牽涉到修改開機檔和裝置掛載設定檔,因此有無法開機的風險,不適合新手操作,除非使用者知道怎麼用Live CD登入並回覆備份。

EXT3檔案系統有三種日誌模式

  • data=journal
  • data=orderd
  • data=writeback

Ubuntu預設是: "data=orderd",是最保險穩定的日誌模式,但是"data=writeback"模式會較有效率 (但沒有"ordered"那麼萬無一失),如果不介這點的話,可以依照下列方式考慮將預設日誌改為"writeback"

1. 因為將更動到Grub開機選單,所以請備份你的menus.list :

cp /boot/grub/menu.lst /boot/grub/menu.lst.backup 

如果無法開機,可以用Live CD進入,掛載/boot,進入/boot/grub,把舊檔拷背回去

2. 編輯menus.list

sudo gedit /boot/grub/menu.lst
  • 找到第一行kernel描述
  • 後面加入:
<空格> rootflags=data=writeback
最後看起來會類似:

圖片:Gedit.menu.lst..png

儲存、離開。


3. 修改fstab (開機自動掛載設定檔) :

首先備份fstab

sudo cp /etc/fstab /etc/fstab.backup

編輯fstab

sudo gedit /etc/fstab

現在要加入《data=writeback,noatime》至你的硬碟掛載設定:

Control + F : 找到  《,errors=remount-ro》

然後在"ro"後方加入:

《,data=writeback,noatime》 

最後看起來像是:

圖片:Data=writeback.png

存檔、離開

4. 執行tune2fs 讓設定生效:

sudo tune2fs -o journal_data_writeback /dev/*ext3硬碟分割代號*

代號可以用以下指令確認:

df -h

檢查看看有沒有套用成功:

sudo tune2fs -l /dev/ext3硬碟分割區代號

重新啟動系統。

sudo reboot now


更改置換檔(swap)使用率設定:

swap使用率設定的設定介於0~100 (%) 預設是60, 如果數值越高, (最多100)則在swap工作量會越多,也就越操硬碟。

筆記型電腦的話, 可以考慮將Swapiness設成 20 (考慮到休眠模式), 擁有足夠的記憶體 (1GB +) 的一般桌上型電腦可以考慮設成 10

先備份:

sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak

編輯:

sudo gedit /etc/sysctl.conf

捲到該文件最底部, 加這行:

vm.swappiness=10

圖片:Sysctl.png

儲存離開

重啟sysctl讓設定生效:

sudo sysctl -p


關掉ipv6

sudo gedit /etc/modprobe.d/bad_list

把下面這行貼進去然後儲存關閉:

alias net-pf-10 off

圖片:Bad list ipv6.png


使用readahead

在一兩年前,Linux 核心尚缺乏一個好的的硬碟預讀機制時,桌面系統的使用者若要加速開機的速度,通常得先解決磁碟存取速度的瓶頸問題。於是得依賴如 readahead 這樣的工具來預先載入想讀入的檔案,以便提高系統載入的速度。

詳見: http://people.debian.org.tw/~chihchun/2008/09/09/readahead-on-eeepc/

安裝:

sudo apt-get install readahead

不用設定,但Grub需要做Profile,請依照下列步驟:


Grub Profile

會將一些基本的開機動作給"歸檔",之後開機速度會稍微加快,適合在大量移除、新增套件、以及更新kernel之後執行一次:

重開機, > 按ESC > 進入Grub選單, Ubuntu開機那行按E編輯 >

圖片:Grubbootmenu.gif

第一行再按E編輯 >

圖片:Grub-edit-kernel-line.jpg

第一行(kernel)那行最後面加入:

<空格>profile

Enter, ESC退出,同一行按"b"繼續開機,這次開機會很花時間,以後就不需要再做一次 (除非 之後有大量移除、新增套件、服務、以及更新kernel)


使用localepurge清除不需要的語言檔

功能說明:一般人通常都會固定使用一種語文..在 i18n 的架構下 , 各國的語文都會有自己一套 locale data , 這當中最明顯的資料就是軟體翻譯檔案 , 有些軟體會提供多國語文的支援,因此當您安裝完一套軟體之後..該軟體可能也順便加裝了好幾國語文的 locale data 對於使用固定語文的人來說..其他沒用到的 locale data 就佔了硬碟空間,千萬別小看這些翻譯檔案..將很多軟體的各國 locale data 加起來也是很大的... 所以這時候我們就需要 locale data 的清道伕 - localepurge .

安裝:

sudo apt-get install localepurge

裝好會跳出這個畫面:

圖片:Localepurge.png

只選擇EN_US和zh_TW.Big5, zh_TW.Big5.UTF-8

按<TAB> 、<確定>

使用PCMAN trans-purge

trans-purge 顧名思義,這是用來移除系統上無用的多國語言翻譯, 很多人都知道 localepurge,但是系統上可以 purge 的其實還有很多地方

我們只用英文和 zh_TW,但是這些檔案內卻常包含十幾國翻譯, 因此會造成系統載入速度的拖慢,也浪費磁碟空間

desktop-purge 就是用來自動掃瞄系統上的 *.desktop 檔, 然後把其中用不到的翻譯全部刪掉,再存檔回去, 使用方式: 以 root 權限直接執行 desktop-purge, 主要會加速的是 gnome-panel 一類,需要產生選單的程式, 效果很明顯。 我系統上需要載入的設定檔從 2 MB 減為 2xx KB。

mime-purge 是從 mime-database 裡面拿掉用不到的檔案敘述, 主要能加速的對象是檔案管理程式 (對 PCManFM 有效), 使用方式: 以 root 權限直接執行 mime-purge

gconf-purge 會從 gconf 的 schema 檔裡面抽掉無用翻譯,可以從系統上從原本的 20 MB 清除完剩下 1.5 MB,相當可觀, 使用方式: 以 root 權限直接執行 gconf-purge

所有用不到的翻譯會被清除掉 (無法復原), 保留下來的語言是英文以及「目前使用中的 locale」


1. 必要編譯的套件

sudo apt-get install build-essential

OR

sudo apt-get install libglib2.0-dev

下載原始碼:

2. 編譯程序:


gcc `pkg-config glib-2.0 --cflags --libs` -o desktop-purge desktop-purge.c
gcc `pkg-config glib-2.0 --cflags --libs` -o mime-purge mime-purge.c
gcc `pkg-config glib-2.0 --cflags --libs` -o gconf-purge gconf-purge.c


3. 安裝程序:

sudo cp desktop-purge /usr/bin/
sudo cp mime-purge /usr/bin/
sudo cp gconf-purge /usr/bin/


4a. 手動清理:

sudo desktop-purge
sudo mime-purge
sudo gconf-purge

4b. 自動清理:

讓每次 apt-get 安裝軟件後自動進行清理。建立這個檔案

sudo gedit /etc/apt/apt.conf.d/99-transpurge

貼上以下內容並儲存:

DPkg
 {
 Post-Invoke {"if [ $(ps w -p "$PPID" | grep -c remove) != 1 ]; then /usr/bin/desktop-purge > /dev/null; /usr/bin/mime-purge >/dev/null ; /usr/bin/gconf-purge > /dev/null; else exit 0; fi";};
 };


警告:無用翻譯在清除後無法還原,若使用後造成系統損壞,作者並不負責。


使用Preload

Preload可以在背景監控你最常用哪些程式,然後事先把那些程式載入快取,這樣當你要執行這些程式時,就可以快速啟動。 ("感覺上"應用程式啟動速度會增快)

安裝

sudo apt-get install preload

不用設定


使用Prelink

prelink 是加快 ELF shared libraries/executables 的載入速度,不算是檔案快取,可以提升應用程式的啟動速度:

安裝

sudo apt-get install prelink


其中參數代表

a    對/etc/prelink.conf 中所紀錄的全部位址進行prelink
v    顯示正在處理的內容
m    節省記憶體,他可以讓兩個不會被同時使用的函式庫共用同樣的虛擬位址
R    分配亂數位址,能減輕緩存溢位攻擊的狀況

此外在debian及ubuntu下都已有設定檔可定時執行,

sudo gedit /etc/default/prelink

加入

PRELINKING=yes

已有/etc/cron.daily/prelink,如此便會由cron自動執行,除了第一次時間很長外,

後續應該速度都很快,除非你upgrade整個系統所有檔案。

在硬體配備較差的機器上,Prelink所有檔案並不是個好主意,因此可以用手動處理prelink,只針對某些應用做Prelink

可以下如此參數

   sudo prelink -avmR

範例: 只針對 Firefox做prelink

sudo prelink -Rm /usr/lib/firefox-3.0.3

範例: 加入開機自動執行:

sudo gedit /etc/init.d/prelinkfx.sh

加入:

#!/bin/sh
sudo prelink -Rm /usr/lib/firefox-3.0.3

加入開機指令稿

sudo update-rc.d prelinkfx.sh defaults