2011年05月10日

Androidのビルドでccacheを使う(その2)

ccacheの話の続きです。 (English version of this page)

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の存在も知らず、何がキャッシュされているのかよくわからなくて、バイナリの同一性が担保

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード