Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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]
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした