# ccache benutzen

## pieter_parker

hallo

hab hier -> http://de.gentoo-wiki.com/index.php?title=Ccache&oldid=10685 etwas gelesen und eine frage..

in der make.conf habe ich "  FEATURES="ccache parallel-fetch"  " stehen

```

ccache -s

cache directory                     /root/.ccache

cache hit                              0

cache miss                             0

files in cache                         0

cache size                             0 Kbytes

max cache size                     976.6 Mbytes

```

bei mir wird der cache irgendwie nicht richtig benutzt glaube ich

```

erster / # cd /var/tmp/ccache

erster ccache # ls -Al

insgesamt 1568

drwxr-sr-x 18 root portage   4096 16. Okt 2006  0

drwxr-sr-x 18 root portage   4096 16. Okt 2006  1

drwxr-sr-x 18 root portage   4096 16. Okt 2006  2

drwxr-sr-x 18 root portage   4096 16. Okt 2006  3

drwxr-sr-x 18 root portage   4096 16. Okt 2006  4

drwxr-sr-x 18 root portage   4096 16. Okt 2006  5

drwxr-sr-x 18 root portage   4096 16. Okt 2006  6

drwxr-sr-x 18 root portage   4096 16. Okt 2006  7

drwxr-sr-x 18 root portage   4096 16. Okt 2006  8

drwxr-sr-x 18 root portage   4096 16. Okt 2006  9

drwxr-sr-x 18 root portage   4096 16. Okt 2006  a

drwxr-sr-x 18 root portage   4096 16. Okt 2006  b

drwxr-sr-x 18 root portage   4096 16. Okt 2006  c

drwxr-sr-x 18 root portage   4096 16. Okt 2006  d

drwxr-sr-x 18 root portage   4096 16. Okt 2006  e

-rw-r--r--  1 root portage      0 17. Mär 11:29 e_cosh.tmp.erster.7253.i

drwxr-sr-x 18 root portage   4096 16. Okt 2006  f

-rw-r--r--  1 root portage 282030 13. Dez 2006  gdevdevn.tmp.erster.24428.i

-rw-r--r--  1 root portage 270840 12. Dez 2006  load_font.tmp.erster.13772.i

-rw-r--r--  1 root portage 937092 17. Okt 2006  moc_qtempo.tmp.erster.20996.ii

-rw-r--r--  1 root portage     71 24. Jun 21:53 stats

-rw-r--r--  1 root portage    168 20. Mai 17:47 tmp.hash.erster.11350.gcno

-rw-r--r--  1 root portage    168 12. Dez 2006  tmp.hash.erster.13531.gcno

-rw-r--r--  1 root portage    168 25. Feb 11:34 tmp.hash.erster.15150.gcno

-rw-r--r--  1 root portage    168 22. Mär 22:00 tmp.hash.erster.21520.gcno

-rw-r--r--  1 root portage    168 17. Okt 2006  tmp.hash.erster.2640.gcno

-rw-r--r--  1 root portage    168  9. Jan 00:12 tmp.hash.erster.27285.gcno

-rw-r--r--  1 root portage    168 20. Nov 2006  tmp.hash.erster.4614.gcno

```

dort ist aber etwas drin, du -H sagt 902M sogar

ich habe eben mal etwas gebaut, und danach nocheinmal ccache -s gemacht, aber alles auf 0 dort

wenn ich das richtig verstanden habe ist das verzeichnis vom ccache neuerdings in /root/.ccache/ ? dieses verzeichnis gibt es bei mir zwar, aber dort ist nichts drin, es ist leer

----------

## Aldo

Wahrscheinlich hast du in /etc/make.conf die Variable CCACHE nicht gesetzt.

Probier mal 

```
CCACHE_DIR="${PORTAGE_TMPDIR}/ccache"
```

 in /etc/make.conf zu setzen...

Als Pfad kannst du auch was anderes eintragen wenn du möchtest...

----------

## Sourcecode

Hast du auch daran gedacht die PATH Variable anzupassen?

Setze in /etc/env.d/99local  hinter /bin 

```
usr/lib/ccache/bin
```

sieht dann in etwa so aus:

```
PATH="/bin:usr/lib/ccache/bin:/usr/bin:..............."
```

----------

## pieter_parker

egal was ich in der make.conf einstelle .. er zeigt mir immer /root/.ccache an

```

ccache -s

cache directory                     /root/.ccache

cache hit                              0

cache miss                             0

files in cache                         0

cache size                             0 Kbytes

max cache size                     976.6 Mbytes 

```

auch die groesse habe ich veraendert, er uebernimmt die einstellung nicht

----------

## pieter_parker

echo "CCACHE_DIR=\"/var/tmp/ccache\"" >> /etc/env.d/99local

env-update 

source /etc/profile

```

ccache -s

cache directory                     /var/tmp/ccache

cache hit                          38946

cache miss                        233213

called for link                    23216

multiple source files                 58

compile failed                      3722

preprocessor error                  2651

not a C/C++ file                    8276

autoconf compile/link              36978

unsupported compiler option         2686

no input file                      12197

files in cache                     42670

cache size                         856.1 Mbytes

max cache size                       2.0 Gbytes

```

nun tuts..

wie ist das eigentlich .. ich hab in meinem desktop pc auf der system festplatte nur gentoo und sonst nichts drauf, die festplatte ist 80gig gross und es ist eine meeenge platz drauf frei, wuerden 10gig fuer den ccache sich schlecht auswirken?

----------

## Sourcecode

 *pieter_parker wrote:*   

> 
> 
> wie ist das eigentlich .. ich hab in meinem desktop pc auf der system festplatte nur gentoo und sonst nichts drauf, die festplatte ist 80gig gross und es ist eine meeenge platz drauf frei, wuerden 10gig fuer den ccache sich schlecht auswirken?

 

Wie meinst du das "schlecht auswirken"?

Performance Einbruch o.ä ist nicht zu befürchten, es regelt ja nur wieviel CCACHE insgesamt nutzen darf.

Ich hab meinen Gentoo Server jetzt mit CCache seid fast nem Jahr am laufen (neu aufgesetzt damals)

und ich habe das CCACHE Folder auf meine Server Partition ausgelagert (hat den Vorteil das wenn ich Gentoo neu aufsetze er auf die alten Cached Files zurückgreifen kann und bei nem Format nicht verloren gehen, solltest du auch so machen, einfach ne Extra Partition.

Erleichtert ne neue Gentoo Installation schon ungemein.

Achja, geh mal mit nano in die 99local, es ist wichtig das nach jedem Pfad ein : steht damit Gentoo weiss das dann der nächste pfad kommt, ansonsten wenn die nicht mit : getrennt sind erkennt Gentoo das als ein einziger Pfad an und das ist falsch.

Aber nochmal zurück zur CCACHE größe.

Wie schon erwähnt lasse ich CCACHE schon seid der Gentoo Installation des Servers mittlaufen, nun nach fast 12 Monaten belegt CCACHE um die 2.8GB

du siehst SO schnell kriegst du die 10gig nicht voll.

Ich würde die Maximale größe erstmal auf 4 oder 5 Gig setzen, kannst du ja später immernoch nach oben erhöhen.  :Smile: 

----------

## pieter_parker

in /etc/env.d/99local steht nur "   CCACHE_DIR="/var/tmp/ccache"    " bei mir, sonst weiter nichts

(..sollte da mehr drin sein?

yup, ich meinte performance technisch gesehen..

keine schlechte idee das mit der extra partition

:edit

wie ist das beim kernel bauen .. der ccache wird doch von emerge benutzt, und wenn ich den kernel mit "make" baue .. wird er nicht mit benutzt?

----------

## Sourcecode

 *pieter_parker wrote:*   

> in /etc/env.d/99local steht nur "   CCACHE_DIR="/var/tmp/ccache"    " bei mir, sonst weiter nichts
> 
> (..sollte da mehr drin sein?
> 
> yup, ich meinte performance technisch gesehen..
> ...

 

Dafür steht die Variable die ich dir oben schon gepostet habe, ich zitiere nochmal aus nem HOWTO:

 *Quote:*   

> Wenn Sie ccache für Kompilierungen außerhalb von Portage nutzen möchten fügen Sie /usr/lib/ccache/bin dem Beginn der PATH Variable hinzu (vor /usr/bin). Dies kann durch Editieren von .bash_profile in Ihrem Home-Verzeichnis erreicht werden. Die Verwendung von .bash_profile ist eine Möglichkeit Ihre PATH-Variable zu definieren.
> 
> PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
> 
> 

 

----------

## mv

 *pieter_parker wrote:*   

> wie ist das beim kernel bauen .. der ccache wird doch von emerge benutzt, und wenn ich den kernel mit "make" baue .. wird er nicht mit benutzt?

 

Nein, dann wird er nicht benutzt. Wenn Du ihn benutzen willst, solltest Du 

```
make CC="ccache gcc"
```

 statt "make" aufrufen und natürlich CCACHE_DIR entsprechend setzen. Falls Du das gleiche CCACHE_DIR wie portage benutzen willst, solltest Du diesen Befehl natürlich auch nur als user "portage" aufrufen. In diesem Fall musst Du natürlich zusätzlich von KBUILD_OUTPUT Gebrauch machen, damit user "portage" auch den Kernel kompilieren darf. Aber KBUILD_OUTPUT empfiehlt sich ohnehin...

----------

