LoginSignup
5
10

More than 5 years have passed since last update.

複数台のRaspberry Piで分散コンパイルし高速ビルド

Posted at

Raspberry Piでビルドすると非力で時間かかって辛いので、たくさんRaspberry Piを用意し、
distccを使って負荷を分散させ高速化しようという試み。

材料

Raspberry Pi 3 × 3

とりあえず、Raspberry Pi3台構成で、
1台をmaster(172.16.83.66)にして、残り2台をslave(172.16.83.67、172.16.83.68)という構成です。

あとはmicroSDとかLANケーブルとかルーターとか電源とかいろいろ準備します。
OSはRaspbian。

masterもslaveも共通の作業

いつも最初にやるやつ

とりあえず最新に、build-essentialsvimも使いたいので入れます。

$ sudo apt-get -y update
$ sudo apt-get -y upgrad
$ sudo apt-get -y install build-essentials vim

distccをインストール

sudo apt-get -y install distcc

config設定

$ sudo vim /etc/default/distcc
/etc/default/distcc
STARTDISTCC="true"
ALLOWEDNETS="0.0.0.0/0"
LISTENER=""
JOBS="4"
ZEROCONF="false"

これは全許可設定なので嫌な方は絞ってください。
JOBS にはコア数を記述します。

ここまでがslaveでもやる作業

masterのみの作業

環境変数に実行マシンのIPアドレスを登録

$ export DISTCC_HOSTS="172.16.83.66 172.16.83.67 172.16.83.68"

いつも使用するhostが固定な場合は、/etc/distcc/hosts に記述してもOKです。

実行

$ CC="distcc gcc" CXX="distcc g++" make -j 12

-j には全台の使用するコア数(4コア×3台 = 12)を設定

計測してみる

OpenframeWorksのサンプルを試しにビルドしてみました。

普通にビルドした場合
$ time make 
real    18m15.392s
user    17m38.395s
sys     0m41.810s
distccを使用した場合
$ time CC="distcc gcc" CXX="distcc g++" make -j 12
real    6m23.335s
user    5m20.043s
sys     0m38.650s

ちゃんと3倍くらいの速度になっていて良い感じです。

今どのhostで処理しているかを確認

ちゃんと働いているか気になるときは distccmon-text で確認できます。

$ watch distccmon-text
 15159  Compile     ofSystemUtils.cpp                          172.16.83.66[0]
 15198  Compile     ofFileUtils.cpp                            172.16.83.66[1]
 15372  Compile     ofRendererCollection.cpp                   172.16.83.66[3]
 15172  Compile     ofURLFileLoader.cpp                        172.16.83.67[0]
 15211  Compile     ofXml.cpp                                  172.16.83.67[1]
 15359  Compile     ofGraphics.cpp                             172.16.83.67[2]
 15289  Compile     ofEvents.cpp                               172.16.83.67[3]
 15185  Compile     ofUtils.cpp                                172.16.83.68[0]
 15224  Compile     ofMatrixStack.cpp                          172.16.83.68[1]
 15346  Compile     ofBitmapFont.cpp                           172.16.83.68[2]
 15300  Compile     ofPath.cpp                                 172.16.83.68[3]
 15397  Preprocess                                                localhost[0]
5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10