Distcc 介紹
-
distcc是一個非常快且免費的分佈式C/C++編譯工具,distcc分爲兩個部分:
- distcc:distcc是一個類似客戶端的程序,不過它的角色是個編譯器,可以讓C/C++代碼在很多網絡服務器上進行分佈式的編譯,就像本地編譯一 樣,當然比本地編譯快很多。
- distccd:distccd是一個守護進程,每個網絡服務器上都需要安裝這個守護進程,用來處理distcc發送過來的各種計算資源。
- distccmon-text:distccmon-text是一個監控程序,用來監控編譯的分佈情況以及網絡服務器編譯使用情況。
- 安裝了distcc後,所有的網絡服務器不需要掛載同樣一份文件系統,不需要服務器時間同步,也不要求同樣的庫文件或者頭文件,甚至服務器之間可以允許不 同的處理器和操作系統。
Distcc 簡單架構
Distcc 安裝
- 在每臺空閒的網絡服務器上,下載distcc(目前到寫完這篇文章爲止,distcc最新版本爲2.18.3),解壓,編譯安裝如下:
~$ wget http://distcc.samba.org/ftp/distcc/distcc-2.18.3.tar.bz2 ~$ tar -jxf distcc-2.18.3.tar.bz2 ~$ cd distcc-2.18.3 ~$ ./configure && make && sudo make install
- 在上面安裝的distcc服務器上,啓動distcc的daemon進程,還可以通過--allow選項指定網關的訪問權限。
~$ sudo /usr/bin/distccd --daemon --allow 10.0.0.0/8 --user cnangel
- 環境變量設置,在所有的安裝distcc的服務器上,執行:
~$ export DISTCC_HOSTS='10.20.137.1 10.20.137.2 10.20.137.3'
當然,爲了保持變量值,可以將上述語句放入到$HOME/.bash_profile當中,另外,可以根據自己愛好不同,指定如下變量:
~$ export CC=distcc ~$ export CXX="distcc g++" ~$ alias make="make -j 4" (一般最好爲服務器數的1.5倍最佳)
- 最後,可以嘗試編譯自己的工程了。
~$ cd ~/works/myproject; ./configure ; make
是不是比平常快了很多呢! :)
小結
- 具官方統計,在內核Linux2.4.19,單臺CPU 1700MHz Pentium IV的機器使用distcc(v0.15)花費了6分45秒,而使用distcc在三臺機器上(100Mbps)交叉編譯,時間花費2分鐘30秒,大概快 2.6倍左右 :)。
- 一般來說,使用distcc節省了很多的編譯時間,對於編譯時間長的大工程來說,是一個不錯的選擇。