[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: compiler avec ICC



Revolver Onslaught wrote:

L'utilisation de -O3 est à proscrire depuis GCC-4.3 (j'avais trouvé par Google
 à l'époque où j'étais sur Gentoo. Je n'ai plus le lien)
A mon avis, c'est faux. -O3 fonctionne bien sur du code qui suit très précisément les normes. Et par expérience, ça fonctionne bien sur un grand nombre de logiciels libres (comme emacs, make, bash, ...). Essaies donc de recompiler ton application actuelle avec un gcc récent (4.3) en -O3!
* il faut comparer les compilateurs, mais généralement (il y a évidemment
des exceptions) les performances varieront peu (moins de 10%, et souvent
moins de 3%) d'un compilateur à un autre

DAns mon cas, même 3% est toujours intéressant à prendre. ;o)

Mon système est un serveur postfix amélioré. Plus clairement, nous disposons
de plusieurs dizaines de serveurs. Nous avons gagné plus de 30 points CPU sur
 un ClamAV compilé avec ICC par rapport à la version compilée avec GCC.
Bien que ClamAV ne soit pas appellé la major partie du temps, ces quelques
points de CPU gagnés ici et là nous amènent à économiser des machines.

J'ai quand même du mal à comprendre la réalité économique de la chose. Imaginons que tu passes une semaine à peaufiner la compilation de plusieurs logiciels pour gagner 3% (donc, si tu as un parc de 30 machines, ça économise une machine). J'ignore combien tu coûtes à ton employeur, mais le chiffre usuel du coût total d'un ingénieur est 150k€ par an (c'est par exemple ce que facturerait une SSII; je parle bien d'un coût total, pas de ton salaire seul!). Pour une semaine de travail, ca fait nettement plus cher qu'une machine. Même si tu coûtais deux fois mois cher (donc seulement 75k€/an) ça ne vaudrait pas forcément le coup.

Optimiser aussi finement (cad pour gagner quelques pourcents) n'est économiquement rentable que dans des cas très particuliers, où on déploie sur beaucoup de machines (cad des milliers), ou bien où on a une application très gourmande sur des très grosses machines.

Le cas extrême, c'est Google (dont la taille du parc est tenu secret, mais on parle de centaines de milliers). Là, augmenter de quelques pouillèmes les performances de GCC justifie (et c'est le cas chez Google) des équipes de plus d'une dizaine de développeurs extrêmement qualifiés travaillant sur GCC (et aussi binutils), notamment Diego Novillo & Ian Taylor.

Mais j'aurais tendance à penser que si ton management te demande de passer une semaine à optimiser clamav pour seulement 30 machines (et donc dans l'espoir d'en gagner tout au plus une seule), ce n'est pas un très bon management. En plus, il pourrait être possible qu'un simple changement de configuration (au sens sysadmin) fasse l'affaire.

Si tu as le temps, racontes nous tes résultats d'optimisation, en terme de gains de performances. Et si tu utilises GCC, n'oublies pas d'en prendre une version récente: GCC 4.3 optimise bien mieux que 4.0 ou 3.4!

Cordialement

--
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***
membre de l'APRIL "promouvoir et défendre le logiciel libre"
Rejoignez maitenant pplus de 3500 adhérents http://www.april.org


Reply to: