makepkg.confを弄る
- 2013/04/27
- Arch Linux
どもども
Arch LinuxにはAURというものがありまして、
pacmanから手に入れられないようなパッケージを簡単にビルド&インストールできるものです。(雑な説明で申し訳ない)
ChromeやOracleJDK、AndroidSDKなんかも手に入ったりします。
ですが、
ビルドが遅い
巨大なパッケージのビルドに時間は掛かるのはわかっています。
でも、マシンの性能の割にはあまりにも遅くないかと。
関係ありそうなことを検索していると、
ありましたありました。
ビルドオプションは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"
としたら、もっと最適化されたものができるかもしれません。