2011年05月10日
Androidのビルドでccacheを使う(その2)
JBQ氏のコメント
前回の記事を英語で書いて Google groupのAndroid Buildingに投稿したところ、GoogleのAndroid Open-Source ProjectにたずさわっているJBQ氏からコメントがありました。
曰く、「ccacheのデフォルトのサイズ(1GB)ではひとつのプロジェクトをビルドするにも小さすぎる。私の場合は100GBに設定している。」
「ccacheで最も効果が高いのが大量のメモリだ。(ひとつのビルドから、また次のビルドをするときにccacheのデータがメモリ上のディスクキャッシュに残るから。)自分のマシンでメモリを12GBから24GBに増やしたときにははっきり効果があらわれた。」
ということなので、メモリはそのうち買い足すことにして、ccacheの設定をもう少し詳しく調べてみました。
ccacheの設定
まずはバージョンの確認とコマンドラインヘルプを見てみます。
$ prebuilt/linux-x86/ccache/ccache -V
ccache version 2.4
Copyright Andrew Tridgell 2002
Released under the GNU GPL v2 or later
$ prebuilt/linux-x86/ccache/ccache -help
ccache, a compiler cache. Version 2.4
Copyright Andrew Tridgell, 2002
Usage:
ccache [options]
ccache compiler [compile options]
compiler [compile options] (via symbolic link)
Options:
-s show statistics summary
-z zero statistics
-c run a cache cleanup
-C clear the cache completely
-F <maxfiles> set maximum files in cache
-M <maxsize> set maximum size of cache (use G, M or K)
-h this help page
-V print version number
今のキャッシュの状態。
$ prebuilt/linux-x86/ccache/ccache -s cache directory /home/koba/.ccache cache hit 17847 cache miss 10456 called for link 1268 compile failed 1 not a C/C++ file 966 unsupported compiler option 144 files in cache 16952 cache size 820.1 Mbytes max cache size 976.6 Mbytes $キャッシュサイズを10GBに増やす。
$ prebuilt/linux-x86/ccache/ccache -M 10G
Set cache size limit to 10485760k
$ prebuilt/linux-x86/ccache/ccache -s
cache directory /home/koba/.ccache
cache hit 17847
cache miss 10456
called for link 1268
compile failed 1
not a C/C++ file 966
unsupported compiler option 144
files in cache 16952
cache size 820.1 Mbytes
max cache size 10.0 Gbytes
$
一度キャッシュを全クリアしてから、ビルド。
$ prebuilt/linux-x86/ccache/ccache -C
Cleared cache
$ rm -rf out
$ ./build.sh
real 14m0.113s
user 112m22.100s
sys 6m37.810s
$ prebuilt/linux-x86/ccache/ccache -s
cache directory /home/koba/.ccache
cache hit 18696
cache miss 19178
called for link 1690
compile failed 1
not a C/C++ file 1288
unsupported compiler option 192
files in cache 17444
cache size 835.4 Mbytes
max cache size 10.0 Gbytes
$
もう一度ビルド。
$ rm -rf out
$ ./build.sh
real 8m1.576s
user 63m33.490s
sys 4m6.700s
$ prebuilt/linux-x86/ccache/ccache -s
cache directory /home/koba/.ccache
cache hit 28030
cache miss 19186
called for link 2112
compile failed 1
not a C/C++ file 1610
unsupported compiler option 240
files in cache 17460
cache size 835.9 Mbytes
max cache size 10.0 Gbytes
$
この例ではキャッシュの使用量は835MBで、デフォルトの1GB未満でしたが、MAXサイズを増やすことで少しヒット数も上がり、ビルド時間も若干短縮しました。安藤恐竜さんのブログによれば、キャッシュ使用量が1GBを超えることもあるらしい。
また、別のビルドツリーをビルドしたらキャッシュサイズが2GBにまで増えたということなので、MAXのキャッシュサイズを(自分の持っているビルドツリーの数 x 1GB + アルファ) くらいに設定しておくのがよさそうです。
ccache関連のリンク
ccacheを使ったリビルドの高速化と、android_disk_vdiのビルドDNA - フリーソフトウエア - ccache
ccacheを使って共同作業のビルド時間を改善する
関連するページ
Androidのビルドでccacheを使うトラックバックURL
トラックバック一覧
1. Androidのビルドの高速化の話 [ 杜松の実 改め ponkmeの日記 ] 2011年05月10日 12:25
Androidのビルドでccacheを使う(その2) ccacheを有効にしておくと、Androidのリビルドが劇的に速くなるという話。私もビルドするときは、ccacheを有効にしています。 初めは、ccacheの存在も知らず、何がキャッシュされているのかよくわからなくて、バイナリの同一性が担保