充份利用多核心加速編譯-更改apt-build.conf

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

充份利用多核心加速編譯-更改apt-build.conf

文章Felix LIN » 週六 2月 09, 2008 6:26 am

小弟寫在這兒:http://blog.lcn.tw/?p=172

有些人老是覺得個人電腦(伺服器也是啦)性能沒有發揮到極致是一種罪惡,因此總是有人不採用單純的apt-get install 來安裝套件。要是不考慮自行下載原碼回來裝的話,那麼apt-build 是個非常棒的選擇。利用apt-build將原碼下載回來後將的自行編譯,可以說是結合了最佳化的理想與apt的方便,但是編譯本身實在是太花時間了,而且有時候還未必會得到想要的效果1。但是有編譯總是強過直接安裝,至少還能求個心安。

但這apt-build這個動作一直讓我感到很困惑,明明還有一個核心還處在低負載,為什麼閒置中的cpu說不動就是不動。直到這兩天重新讀了歐來禮的「駭客一百招」,在「make」這招裡面,有介紹一個重要的參數-j。基本上只要是有雙處理器的系統,在做make的時候加上參數

代碼: 選擇全部
    -j2


,速度即可增加到快兩倍,也就是說兩顆cpu都做make的動作。

那麼apt-build怎麼處理?apt-build又沒有這個參數可以下,我到底該怎麼辦。好在apt-build有個設定檔,放在


代碼: 選擇全部
     /etc/apt/apt-build.conf




像小弟的T60 (使用intell T7200)的apt-build.conf如下:

代碼: 選擇全部
 
    build-dir = /var/cache/apt-build/build
    repository-dir = /var/cache/apt-build/repository
    Olevel = -O2
    mtune = -mtune=prescott
    options = ” ”
    make_options = ” ”


預設的make _options是空白的,這個時候我們只需要將
make_options = ” “填上-j2,這下子在make的時候就可以充份地讓兩顆cpu同時來make了。

像是小弟目前在跑網頁伺服器是4核心cpu,那參數就改成-j4就行了。
如此一來apt-build 在make 的時候也可以充份利用多核心了。

這個真的不唬爛,每個核心都有事做,編譯起來真的有效率太多了。
Felix LIN
可愛的小學生
可愛的小學生
 
文章: 13
註冊時間: 週六 10月 20, 2007 4:54 pm

文章PCMan » 週六 2月 09, 2008 1:12 pm

實測過了,確實有比較快,但是....並沒有原 po 所講的這麼誇張
我用編譯 pcmanfm 來測試,在 Intel Core2 1.8G 的機器上
make 23 秒
make -j2 19 秒
試驗很多次結果都一樣
結論是,有比較快,但並不會快上一倍,
我這邊測試事實上速度只有增加 20 %
不過,真的有比較快一些些就是了,還不賴。
PCMan
榮譽學長
榮譽學長
 
文章: 217
註冊時間: 週六 7月 02, 2005 10:46 am

文章Felix LIN » 週六 2月 09, 2008 1:36 pm

忘了說明一下,那個快到很扯的數據是從書上來的,作者把其他服務全都關了,儘量減少閒置的服務。不過有快就好,不然的話只有一核在運作,那多嘔啊。
Felix LIN
可愛的小學生
可愛的小學生
 
文章: 13
註冊時間: 週六 10月 20, 2007 4:54 pm

文章訪客 » 週六 2月 09, 2008 2:50 pm

想徹底最佳化整個 Linux 系統,建議可以玩 Gentoo,那個 make 參數只是基本的東西,
Gentoo 有很多東西可以玩,但要花費很多時間,一旦搞定了,您會發覺原來 Linux
也可以跑的如此順暢。
訪客
 

文章wiz » 週一 2月 11, 2008 1:22 pm

-jx 的參數還要考慮其它的部份, 如disk i/o,
若程式不是很複雜, 在I/O的部份會佔編譯時間很大的部份,
但若是複雜的程式(ex: template in C++), 那就會感受出明顯的差別.
wiz
可愛的小學生
可愛的小學生
 
文章: 62
註冊時間: 週日 11月 24, 2002 7:57 pm


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客