Tosainu Lab

makepkg.confを弄る

どもども

 

Arch LinuxにはAURというものがありまして、

pacmanから手に入れられないようなパッケージを簡単にビルド&インストールできるものです。(雑な説明で申し訳ない)

ChromeやOracleJDK、AndroidSDKなんかも手に入ったりします。

 

ですが、

 

ビルドが遅い

巨大なパッケージのビルドに時間は掛かるのはわかっています。

でも、マシンの性能の割にはあまりにも遅くないかと。

 

関係ありそうなことを検索していると、

 

makepkg - ArchWiki

 

ありましたありました。

ビルドオプションはmakepkg.confを弄ればいいみたいです。

 

さて、デフォルトの設定は・・・

・・・
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="x86_64"
CHOST="x86_64-unknown-linux-gnu"

#— Compiler and Linker Flags

-march (or -mcpu) builds exclusively for an architecture

-mtune optimizes for an architecture, but builds for whole processor family

CPPFLAGS=“-D_FORTIFY_SOURCE=2” CFLAGS=“-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector —param=ssp-buffer-size=4” CXXFLAGS=“-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector —param=ssp-buffer-size=4” LDFLAGS=“-Wl,-O1,—sort-common,—as-needed,-z,relro” #— Make Flags: change this for DistCC/SMP systems #MAKEFLAGS=“-j2” #— Debugging flags DEBUG_CFLAGS=“-g -fvar-tracking-assignments” DEBUG_CXXFLAGS=“-g -fvar-tracking-assignments” ・・・

け し か ら ん

 

Gentooのインストールとかを経験している人なら「ピンッ」ってきそうな項目ですね。

要は、

一般的なx86_64のプロセッサ向け(-march=x86-64 -mtune=generic -O2 -pipe)に1スレッドだけ(#MAKEFLAGS="-j2" マルチスレッドでのビルド無効)でビルドする。」

という設定になっています。

 

ウチのメイン機は12スレッド。また、Corei7に最適化されるように、CFLAGS、CXXFLAGS、MAKEFLAGSを編集します。

・・・
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="x86_64"
CHOST="x86_64-unknown-linux-gnu"

#— Compiler and Linker Flags

-march (or -mcpu) builds exclusively for an architecture

-mtune optimizes for an architecture, but builds for whole processor family

CPPFLAGS=“-D_FORTIFY_SOURCE=2” CFLAGS=“-march=corei7 -O2 -pipe” CXXFLAGS=”${CFLAGS}” LDFLAGS=“-Wl,-O1,—sort-common,—as-needed,-z,relro” #— Make Flags: change this for DistCC/SMP systems MAKEFLAGS=“-j12” #— Debugging flags DEBUG_CFLAGS=“-g -fvar-tracking-assignments” DEBUG_CXXFLAGS=“-g -fvar-tracking-assignments” ・・・

これで、

Corei7(i3とかi5、Xeonとかも)に最適化されたアプリケーションを12スレッドでビルドする」

という設定になった(はず)です。

 

 

では効果の確認といきますか!

 

方法

ホームフォルダに作成されたmakepkgフォルダ内に、IMEであるMozcのtarballをDL&展開。

一旦makepkgコマンドを実行し、ソースコードのダウンロードが完了したところでCtrl+Cで中断。

 

makepkg.confの編集前と編集後で、makepkgコマンドの実行に掛かる時間を計測する。

時間は

==> Making package:・・・

から

==> Finished making:・・・

までの間とし、その時に表示される開始時刻と終了時刻の差をパッケージ生成に掛かった時間とする。

 

 

そろそろ見飽きてきたメイン機のスペック(関係ありそうなところだけでいいよねもう)

CPU:i7-3930k@4500MHz

 

 

編集前

==> Making package: mozc 1.10.1390.102-2 (Sat Apr 27 11:09:05+0900 2013)

==> Finished making: mozc 1.10.1390.102-2 (Sat Apr 27 11:14:05+0900 2013)

掛かった時間:5分

 

編集後

==> Making package: mozc 1.10.1390.102-2 (Sat Apr 27 11:22:47+0900 2013)

==> Finished making: mozc 1.10.1390.102-2 (Sat Apr 27 11:24:06+0900 2013)

掛かった時間:1分19秒

 

 

キタ———(゜∀゜)———— !!

メチャクチャ早くなりました。

 

今回は12スレッドという設定にしましたが、HTは信用できないので、

6スレッドにしたらもしかしたらもっと早くなるかもしれません。

 

また、ビルド時間には関係ありませんが、3930kはAVX命令にも対応しているので、

CFLAGS="-march=corei7-avx -O2 -pipe"

としたら、もっと最適化されたものができるかもしれません。