Using ccache with make world

From: Alex Dupre <ale_at_FreeBSD.org>
Date: Tue, 21 Mar 2006 14:26:36 +0100
Short summary:

I made a patch to ccache port so that we can actually and effectively
use ccache when making buildworld and buildkernel. The patch can be
found at: http://www.alexdupre.com/ccache.diff
Read the ccache-freebsd-howto.txt file before using ccache.

Long description:

As you know, until now, building FreeBSD with ccache spotted several
issues because of the complex "make world" process; in particular it
changes the default path and build a new compiler with different header
files and this avoids any effective use of ccache. Some workarounds grew
up, but they fix only a subset of the problems, creating (sooner or
later) issues elsewhere. This patch tries to fix (or at least minimize)
all the problems, implementing a mixture of floating ideas collected
from various threads. For an implementation overview, I recommend to
read the simple patch, because explaining it will be more complex for me :-)

Benchmarks:

Just booted into a new world/kernel, compiled (and installed) for the
first time with ccache. /usr/obj is empty.

# ccache -s
cache directory                     /usr/.ccache
cache hit                            932
cache miss                         16144
called for link                      755
multiple source files                  1
compile failed                       107
preprocessor error                    35
not a C/C++ file                    1550
autoconf compile/link                807
unsupported compiler option          546
no input file                        116
files in cache                     32288
cache size                         219.7 Mbytes
max cache size                     976.6 Mbytes

# time make buildworld
[...]
547.504u 206.484s 18:02.28 69.6%       2792+1865k 38436+7220io 6874pf+0w

# ccache -s
cache directory                     /usr/.ccache
cache hit                          13027
cache miss                         16265
called for link                     1311
multiple source files                  2
compile failed                       107
preprocessor error                    35
not a C/C++ file                    2759
autoconf compile/link                807
unsupported compiler option          546
no input file                        117
files in cache                     32530
cache size                         220.0 Mbytes
max cache size                     976.6 Mbytes

# time make buildkernel
[...]
125.756u 47.537s 5:03.57 57.0%  2664+1990k 13871+4882io 715pf+0w

# ccache -s
cache directory                     /usr/.ccache
cache hit                          15070
cache miss                         16268
called for link                     1314
multiple source files                  2
compile failed                       107
preprocessor error                    35
not a C/C++ file                    2763
autoconf compile/link                807
unsupported compiler option          552
no input file                        117
files in cache                     32536
cache size                         220.2 Mbytes
max cache size                     976.6 Mbytes

--
Alex Dupre
Received on Tue Mar 21 2006 - 12:26:44 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:53 UTC