distccでmakepkgの高速化を狙う

Pocket

ビルドって結構時間かかる。最近telegram-desktop – aurがしょっちゅうバージョンアップするわけだが、これ、Qtのstatic版を手元で毎度ビルドするのだ。まぁそれを保持しておいてくれればいいんだけど、これの他にも色々ビルドすることはあるので、PKGBUILDからビルドしてくれるmakepkgを高速化してやりたい。

makeに手作業で-jとかつけて回っても良いが、せっかく手元にマシンが複数あるので、分散ビルドさせてみたほうが面白いのでは?つーわけで、distccをつかう。

 

基本的にはDistcc – ArchWikiの通りの作業でおk。

一応記しておこう。

 

状況は以下のとおり。

参加するホスト:マスター(192.168.0.55)、スレーブ(192.168.0.70)

マスターのCPU:Core i7 870(4C/8T)、スレーブのCPU:Celeron G550(2C/2T)

 

インストールはdistccパッケージを放り込めばおk、マスターにもスレーブにもインストールしよう。

 

スレーブの設定は/etc/conf.d/distccdを多少いじるのみ。

DISTCC_ARGS=”–allow 192.168.0.0/24″

の行をそれらしくしたら、systemctl start distccdすればおk

 

マスターでは/etc/makepkg.confをいじる。

・BUILDENVでdistccの前のビックリマークを切る

・DISTCC_HOSTSでジョブを実行するホストとそこのスレッド数を指定する(パワーが強い順にする)

・MAKEFLAGSで全スレッド数を合計したものを指定する

DISTCC_HOSTS=”localhost/8 192.168.0.70/2″
MAKEFLAGS=”-j10″

 

以上で設定はおしまい。パフォーマンス比較ということで、Linuxカーネルをビルドしてみよう。

$ cd
$ mkdir kernel_build && cd kernel_build
$ ABSROOT=. abs core/linux
$ cd ./core./linux
$ vim PKGBUILD
$ makepkg
$ sudo pacman -S xmlto
$ time makepkg

鍵の検証が出来ないとかなんとか言われたので、ひとまず.signをなかったことにしておいた。

先にmakepkgを実行してやれば、必要なもので今入っていないパッケージがどれかわかる。というわけでxmltoだけ手動でインストールした。

最後は実際のビルドと計測である。

 

distcc有効/無効でtimeの出力は以下の通り

# distcc無効
makepkg 10837.49s user 692.22s system 695% cpu 27:37.28 total
# distcc有効
makepkg  8178.88s user 584.70s system 560% cpu 26:02.75 total

多少早くなっているみたい(認識が雑)

 

ビルド中の様子はdistccmon-{text,gnome}で確認できる。gnomeだと様子が視覚的に見えておもしろい。

telegram-desktopビルド中

 

我が家にあるCPUは以下の通り

・Pentium DualCore E5300(自宅サーバ、Ubuntu16.04)
・Celeron G550(今回スレーブで使ったクソショボCPU、ArchLinux)
・Core i7 870(旧メインマシン、諸々作業所、ArchLinux)
・Core i7 6700K(現メインマシン、Windows10)
・AthlonII X2 250e(録画機、Windows7)

自宅サーバは違うディストロなのでコンパイラバージョンが食い違っていることが予想される(上にパワーが死ぬほど無い)ので組み込みにくい。あとはWindowsなので組み込むのダルい…メインマシンをArchLinuxにしちゃおうか悩むくらいだ。

計画では、そろそろ自宅サーバを新調する予定なので、それを参加するようにできれば、それでいいかな…

お茶漬け

たまーに飲み屋で食べるお茶漬けめちゃウマい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です