Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[ccache] Vraiment utile? (concl: des fois oui, des fois non)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
letoff
Apprentice
Apprentice


Joined: 04 Mar 2004
Posts: 163
Location: root in Paris, windsurfer in Brest

PostPosted: Sat Dec 03, 2005 2:29 pm    Post subject: [ccache] Vraiment utile? (concl: des fois oui, des fois non) Reply with quote

Bonjour,

Aujourd'hui en voulant voir un peu où en était la taille de mon ccache suite à la compil de gcc-3.4.4, j'ai donc regardé ça d'un peu plus près:

Marge ~ # ccache -s
cache hit 50518
cache miss 237498
called for link 25166
multiple source files 315
compile failed 7504
preprocessor error 4558
not a C/C++ file 15039
autoconf compile/link 71025
unsupported compiler option 10463
no input file 25285
files in cache 424703
cache size 2.7 Gbytes
max files 1000000
max cache size 3.0 Gbytes

Bon de prime abord je trouve que le nombre de cache miss est un peu élevé pour cette machine qui me sert de serveur, et où je n'installe donc que très peu de choses nouvelles. J'ai effectué le test sur un emerge de gcc avec le ccache d'activé et un autre sans. Le résultat me parait stupéfiant, qu'en dites vous?

Marge ~ # genlop -t gcc
* sys-devel/gcc

Sun May 2 22:25:55 2004 >>> sys-devel/gcc-3.3.2-r5
merge time: 34 minutes and 42 seconds.

Wed Jun 9 23:24:56 2004 >>> sys-devel/gcc-3.3.3-r6
merge time: 34 minutes and 10 seconds.

Sat Aug 28 13:20:40 2004 >>> sys-devel/gcc-3.3.4-r1
merge time: 29 minutes and 46 seconds.

Fri Sep 10 16:26:57 2004 >>> sys-devel/gcc-3.3.4-r1
merge time: 1 hour, 6 minutes and 16 seconds.

Sun Jan 16 23:38:35 2005 >>> sys-devel/gcc-3.3.5-r1
merge time: 1 hour, 36 minutes and 13 seconds.

Mon Apr 11 18:14:05 2005 >>> sys-devel/gcc-3.3.5.20050130-r1
merge time: 1 hour, 14 minutes and 41 seconds.

Tue Sep 6 16:27:09 2005 >>> sys-devel/gcc-3.3.6
merge time: 1 hour, 15 minutes.

Sat Dec 3 14:13:41 2005 >>> sys-devel/gcc-3.4.4-r1
merge time: 38 minutes and 17 seconds.

Sat Dec 3 14:59:26 2005 >>> sys-devel/gcc-3.4.4-r1
merge time: 38 minutes and 31 seconds.

[edit]

Le passage d'une demi-heure à 1h15 de compil correspond à l'ajout de gcj et ne fait pas partie du test. Seules les 2 dernières valeurs correspondent à mon emerge d'aujourd'hui (à nouveau sans gcj qui fait planter l'emerge). La 1ère compil est fait avec le ccache et la deuxième sans: 14sec d'écart à l'arrivée seulement... :o
_________________
Gentoo won't be suitable for server's use until GLEP 19 is alive.


Last edited by letoff on Sun Dec 04, 2005 4:01 pm; edited 1 time in total
Back to top
View user's profile Send private message
nevro
Tux's lil' helper
Tux's lil' helper


Joined: 13 Nov 2004
Posts: 149
Location: France

PostPosted: Sat Dec 03, 2005 2:52 pm    Post subject: Reply with quote

en effet 14 sec ce n'est pas enorme,mais les caches ne font jamais gagné des heures complete,compte 14 sec par ci,14 sec par là..le chiffre grimpe vite.On retrouve la meme chose avec les processeurs,tout depend vraiment ce que l'on veut faire avec apres,mais le but du cache ne permet pas que d'aller plus vite,il permet des corrections d'erreurs..etc
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1964
Location: 127.0.0.1

PostPosted: Sat Dec 03, 2005 3:03 pm    Post subject: Reply with quote

Salut,

La toute première fois que j'ai compilé openoffice (pas le 2, la version précédente), la compil a planté au bout de 4h30 environ, par manque de place sur la partition /var, et était quasiment terminée.
J'ai relancé juste derrière, en ayant fait un peu de ménage sur le /var : compilation et installation terminée en 3 heures.
Donc çà doit bien servir à quelque chose :wink:
Back to top
View user's profile Send private message
guilc
Bodhisattva
Bodhisattva


Joined: 15 Nov 2003
Posts: 3326
Location: Paris - France

PostPosted: Sat Dec 03, 2005 3:18 pm    Post subject: Reply with quote

Code:
     Thu Oct 13 23:42:34 2005 >>> kde-base/kdelibs-3.4.3
       merge time: 57 minutes and 42 seconds.

     Mon Oct 31 15:18:38 2005 >>> kde-base/kdelibs-3.4.3
       merge time: 25 minutes and 11 seconds.

Tu es convaincu ? :)

ccache fonctionne seulement si les lignes de commande et les sources sont absolument identiques.
En pratique, ccache activé, la première compilation stocke ses résultats dans le cache, et a la recompilation, il va piocher les résultats dasn le cache, issus de la première compilation.

Donc si entre les deux compilations tu as changé un cflags, un USE, ou ce genre de chose, tu ne verras pas de gain...

Mais bon, pour mon kdelibs, c'est plutot convainquant non ? environ moitié moins de temps !
_________________
Merci de respecter les règles du forum.

Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing
Back to top
View user's profile Send private message
mic006fr
Tux's lil' helper
Tux's lil' helper


Joined: 16 Sep 2004
Posts: 135
Location: FRANCE - Toulouse

PostPosted: Sat Dec 03, 2005 6:30 pm    Post subject: Reply with quote

A condition de compiler deux fois de suite la même chose...
En pratique, si on recompile, c'est justement que l'on a changé un USE flags, que la version a changé, ...
Le gain est nul dans ces cas là ?

Pour le noyau, le gain est peut-être plus important (quoique si la version apprait dans la ligne de commande, alors le cache sert également à rien)?
Je m'interroge vraiment sur l'utilité de ccache pour quelqu'un qui ne fait pas du dev / compile des cvs très souvent...
Back to top
View user's profile Send private message
letoff
Apprentice
Apprentice


Joined: 04 Mar 2004
Posts: 163
Location: root in Paris, windsurfer in Brest

PostPosted: Sat Dec 03, 2005 6:35 pm    Post subject: Reply with quote

guilc wrote:

Tu es convaincu ? :)


Justement non, c'est le sujet de mon post ! :(

guilc wrote:

Donc si entre les deux compilations tu as changé un cflags, un USE, ou ce genre de chose, tu ne verras pas de gain...


Et bien je n'ai justement rien changé du tout entre ces 2 compils! Il faut savoir comment travaille ccache en profondeur pour savoir si un cache de grande taille est vraiment utile. D'après ce que j'ai compris, ccache utilise un hash pour reconnaitre les fichiers sources. Or quand on en a environ 450000 comme moi je me demande comment fait ccahe pour parcourir tout ça en allant plus vite que la compil d'un simple fichier. Bon, je viens de vider mon cache et de réemerger gcc avec le ccache d'activé, on va bien voir.

Marge ~ # ccache -s
cache hit 16
cache miss 449
called for link 45
multiple source files 1
compile failed 22
preprocessor error 2
not a C/C++ file 3
autoconf compile/link 171
no input file 20
files in cache 898
cache size 9.1 Mbytes
max files 1000000
max cache size 3.0 Gbytes

Marge ~ # genlop -t gcc
* sys-devel/gcc
[snip]

Sat Dec 3 17:14:49 2005 >>> sys-devel/gcc-3.4.4-r1
merge time: 1 hour, 14 minutes and 41 seconds.

Là je le relance à nouveau et je vous tiendrais au courant demain car je dois y aller.
_________________
Gentoo won't be suitable for server's use until GLEP 19 is alive.
Back to top
View user's profile Send private message
NiLuJe
Guru
Guru


Joined: 06 Nov 2004
Posts: 303
Location: Paris, France

PostPosted: Sat Dec 03, 2005 7:37 pm    Post subject: Reply with quote

Tapez moi si je me trompe, mais certains paquets n'utilisent explicitement _PAS_ ccache, dont gcc ... Me trompe-je?

(Puis de toute façon y'a la moitié de la compil qui se fait avec le 'nouveau' gcc fraîchement compilé appelé directement, si j'ai bien compris, donc bye ccache...)

Bref, c'est peut-être pas l'exemple à retenir gcc ^^
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1964
Location: 127.0.0.1

PostPosted: Sat Dec 03, 2005 8:07 pm    Post subject: Reply with quote

mic006fr wrote:
Pour le noyau, le gain est peut-être plus important (quoique si la version apprait dans la ligne de commande, alors le cache sert également à rien)?

Euh, à mon avis, le noyau n'étant pas compilé par emerge, ccache n'est pas utilisé du tout.
Voir le handbook : Utiliser Gentoo --> Portage et ses fonctionnalités --> 3.c. Utiliser un cache pour la compilation --> Utilisation de ccache en dehors de Portage

letoff wrote:
D'après ce que j'ai compris, ccache utilise un hash pour reconnaitre les fichiers sources. Or quand on en a environ 450000 comme moi je me demande comment fait ccahe pour parcourir tout ça en allant plus vite que la compil d'un simple fichier.

Et bien justement : je ne connais pas les subtilités du compilateur, ni sa vitesse d'analyse du code source, sa vitesse d'éxécution, etc.. etc.. ni même le fonctionnement interne de ccache, mais il est peut être plus rapide de vérifier si le fichier 1fc590a0b9c99b1f546f6e7a8349bb-45543 existe dans le répertoire de ccache, plutôt que de se taper (pour le compilateur) l'analyse syntaxique du code source et tout ce qui en découle non ?
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2885
Location: Grenoble, France

PostPosted: Sun Dec 04, 2005 10:56 am    Post subject: Reply with quote

Au passage, quand on change un useflag, en général, ça change pas tous les fichiers compilés, mais seulement certain, donc sur ceux qui ne sont pas influencé par le flag, on y gagne...
Back to top
View user's profile Send private message
guilc
Bodhisattva
Bodhisattva


Joined: 15 Nov 2003
Posts: 3326
Location: Paris - France

PostPosted: Sun Dec 04, 2005 11:00 am    Post subject: Reply with quote

kopp wrote:
Au passage, quand on change un useflag, en général, ça change pas tous les fichiers compilés, mais seulement certain, donc sur ceux qui ne sont pas influencé par le flag, on y gagne...

Sauf que changer un USE == changer une option de configuration == changer le fichier config.h généré par le configure
OR, ce fichier est inclu dans a peu près toutes les sources en général
Conclusion, tous les fichiers source (une fois inclusion faites, ce qui nous interesse ici en fait) sont modifiés
CQFD :)
_________________
Merci de respecter les règles du forum.

Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2885
Location: Grenoble, France

PostPosted: Sun Dec 04, 2005 11:23 am    Post subject: Reply with quote

ah zut! bon ben j'ai rien dit
je pensais que c'était le makefile qui passait les differentes options de compilations nécessaires
Bon, je me tais alors!

(n'empèche y en a peut-être qui n'incluent pas ce config.h)
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1894
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Sun Dec 04, 2005 11:44 am    Post subject: Reply with quote

Bonjour,

Je ne maîtrise pas totalement les arcanes de ccache, mais je l'utilise depuis longtemps, en conjonction avec distcc. Ce que j'ai pu déduire des stats que j'ai fait avec, c'est que si ça accélère effectivement les compilations, ça ne marche pas dans tous les cas. En gros, les requêtes sur ccache se vautrent environ 80% du temps chez moi (. Mais quand ça fonctionne, ça accélère effectivement considérablement les choses.

C'est très utile :
  • quand on compile une nouvelle révision d'un logiciel (très souvent, correction de sécurité, bug mineur, 99% du code reste inchangé, et donc directement piochable dans ccache
  • pour la phase de .configure de quasiment toutes les compilations, car les tests de compilation sont presque toujours les mêmes.


Mais effectivement, ce n'est pas une solution miraculeuse : certains logiciels n'en tirent pas du tout parti (tout comme certains sont ne sont pas "distcc-ables", genre xorg-x11).

On peut donc en attendre certains avantages, mais on ne peut pas en espérer un gain de 50%. Comme je le disais plus haut, je suis à environ 20% de hits sur le total (y compris les "called for link")...
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
letoff
Apprentice
Apprentice


Joined: 04 Mar 2004
Posts: 163
Location: root in Paris, windsurfer in Brest

PostPosted: Sun Dec 04, 2005 3:52 pm    Post subject: Reply with quote

NiLuJe wrote:
Tapez moi si je me trompe, mais certains paquets n'utilisent explicitement _PAS_ ccache, dont gcc ... Me trompe-je?

(Puis de toute façon y'a la moitié de la compil qui se fait avec le 'nouveau' gcc fraîchement compilé appelé directement, si j'ai bien compris, donc bye ccache...)

Bref, c'est peut-être pas l'exemple à retenir gcc ^^


Effectivement, celà me semble la réponse la plus plausible. Voici le résultat de mes 2 dernières compils avec le ccache d'activé, la 1ère ayant un cache vide:

Code:

Marge ~ # genlop -t gcc
 * sys-devel/gcc
[snip]

     Sat Dec  3 17:14:49 2005 >>> sys-devel/gcc-3.4.4-r1
       merge time: 1 hour, 14 minutes and 41 seconds.

     Sat Dec  3 20:46:58 2005 >>> sys-devel/gcc-3.4.4-r1
       merge time: 1 hour, 10 minutes and 48 seconds.


Ceci étant, je n'ai rien compilé depuis ces 2 gcc et voici les stats de ccache:

Code:

Marge ~ # ccache -s
cache hit                            482
cache miss                           449
called for link                       90
multiple source files                  2
compile failed                        44
preprocessor error                     4
not a C/C++ file                       6
autoconf compile/link                342
no input file                         40
files in cache                       898
cache size                           9.1 Mbytes
max files                        1000000
max cache size                       3.0 Gbytes


Il y a donc bien eu une utilisation de ccache pendant la compil de gcc! :roll:

NetFab wrote:

mais il est peut être plus rapide de vérifier si le fichier 1fc590a0b9c99b1f546f6e7a8349bb-45543 existe dans le répertoire de ccache, plutôt que de se taper (pour le compilateur) l'analyse syntaxique du code source et tout ce qui en découle non ?


C'est bien là tout le sens de mon interrogation. Il doit bien y avoir un seuil au delà duquel cette recherche prend plus de temps que la compil, surtout si c'est pour un petit fichier. Enfin ce n'est que mon avis et comme toi je ne connais pas suffisament les arcanes de ccache pour l'affirmer.

Merci à tous en tout cas pour cette discussion.
Bonne fin de w-e.
_________________
Gentoo won't be suitable for server's use until GLEP 19 is alive.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum