View previous topic :: View next topic |
Author |
Message |
to.alex n00b
Joined: 08 Apr 2007 Posts: 67
|
Posted: Thu Jun 07, 2007 9:54 pm Post subject: CFLAGS... considerazioni. |
|
|
Complice il recente aggiornamento di gcc, complice qualche lettura di troppo sull'argomento, ho voluto approfondire un pochino, in modo da avere anche io le mie personali convinzioni e opinioni sulle CFLAGS.
A questo punto però mi sono posto una domanda: il metodo attuale, con cui portage le gestisce, è il migliore?
Vi spiego il perché di questa domanda.
Ho impostato alcune CFLAGS per il mio sistema, basandomi sulla documentazione di GCC e in parte aiutandomi con ACOVEA, che però, alla fine della fiera (insomma dopo averlo provato e dopo aver letto quel po' di documentazione che è possibile reperire in giro) ho stabilito essere, per un sistema operativo, solo un buon "dizionario" di CFLAGS, con una discreta capacità di "beccare" qualche flag buon e qualche flag dannoso. Insomma è buono per il singolo applicativo, se di piccole dimensioni, dedicato al calcolo intensivo, e se si ha tanto tempo per provare. Per ottimizzare un sistema operativo non è certo il metodo migliore.
E da qui ho capito che ogni applicativo dovrebbe avere delle proprie CFLAGS, magari con dei meccanismi simili a quelli degli overlay o delle use flags.
Esempio. Fra le CFLAGS che ho impostato, inizialmente c'era -funroll-all-loops. lo so non è carino da farsi. Ma messa assieme alle altre, su alcune applicazioni (Hugin, tanto per citarne una su cui ho potuto fare delle misurazioni puntuali) riuscivo a guadagnare circa un 10% in prestazioni. In altre applicazioni, come ad esempio Open Office, sdl-gfx, thunderbird e alcune parti di KDE, invece questa flag (come è giusto che sia) impallava tutto, o non facendo terminare la compilazione, o compilando, ma creando problemi all'applicazione. Allora mi sono premurato di toglierla e guardando (grazie a genlop) le opzioni di compilazione dei pacchetti incriminati ho visto che queste venivano (vengono tutt'ora) in parte sovrascritte dall'ebuild. Ad esempio in OpenOffice, qualsiasi cosa si imposti, comunque verrà inserito un -O2. In altri applicativi addirittura vengono totalmente ignorate le CFLAG definite dall'utente e forzate dall'ebuild.
Ora, dato che sono più che cosciente del fatto, che se un ebuild forza delle CFLAG, avrà le sue buone ragioni, e che certe CFLAG vanno bene per alcuni software ma fanno danni su altri, come dicevo, stavo pensando: non sarebbe meglio avere un controllo più fine sulle CFLAG, così come lo si ha sulle USE flag? Magari pensando a dei meccanismi di overlay per far convivere CFLAG consigliate, raccomandate, obbligatorie, e impostate dall'utente?
Attendo con ansia, commenti, pareri, suggerimenti, link ad altra documentazione da leggere e ad altri post (che non sono riuscito a trovare) dove la discussione è già stata affrontata e risolta in maniera definitiva 3 anni fa (sono ironico ma capita spesso).
Ciao. |
|
Back to top |
|
|
skypjack l33t
Joined: 05 Aug 2006 Posts: 884 Location: Italia - Firenze
|
Posted: Thu Jun 07, 2007 9:58 pm Post subject: |
|
|
La discussione potrebbe farsi interessante, ma domattina, ora ho troppo sonno... Scusa... |
|
Back to top |
|
|
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Thu Jun 07, 2007 10:35 pm Post subject: |
|
|
oppure fidarsi delle cflags impostate a forza dai pacchetti e limitarsi a mettere ad esempio (per un centrino)
Quote: | CFLAGS="-O2 -march=i686 -mmmx -msse -msse2 -fomit-frame-pointer -pipe" |
Si potrebbero anche togliere -mmmx -msse -msse2 che servono al giusto...
Ci si risparmiano un sacco di grattacapi, tempo e salute e si ottiene un sistema indistinguibile da quello ottenuto altrimenti. Con tutto il tempo che si guadagna si va a lavorare, si guadagnano un sacco di soldi e ci si compra un pc più potente che ci porta vantaggi prestazionali che non avremmo mai immaginato con le CFLAGS.
Io preferisco tuttavia usare il tempo risparmiato per fare i cavoli miei visto che non spenderei il mio tempo libero per un pc più potente _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
|
to.alex n00b
Joined: 08 Apr 2007 Posts: 67
|
Posted: Thu Jun 07, 2007 10:48 pm Post subject: |
|
|
Beh, si ok, ma stiamo o no usando Gentoo? Mica lo faccio (solo) per le prestazioni.
Soprattutto lo faccio per conoscere e imparare cose nuove.
Poi in realtà fino all'altro giorno giravo con "-march=athlon-xp -mtune=athlon-xp -pipe -O3 -fomit-frame-pointer" felice e contento come nulla fosse. Però Gentoo mi piace perché ti spinge a conoscere e a creare il tuo sistema (ma sei sempre libero di scegliere le opzioni di base). Un ulteriore grado di libertà, non lo vedrei negativamente.
Certo potrebbe diventare una tragedia per gli sviluppatori, che potrebbero vedersi segnalati bug, che dipendono esclusivamente dalle cflag usate dagli utenti, ma quando questo non porterebbe ad avere del codice migliore, potrebbe comunque portare delle cflag consigliate o obbligatorie (non sovrascrivibili), come in parte già accade, ma senza che l'utente abbia voce in capitolo.
Comunque adesso crollo dal sonno anch'io, ed è quindi bene che vada a fare le ninne.
'notte. |
|
Back to top |
|
|
Onip Advocate
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Fri Jun 08, 2007 7:39 am Post subject: |
|
|
c'è già bashrc-ng che ti permette di impostare cflags specifiche per ogni pacchetto. se cerchi sul forum documentazione italiano trovi il post. _________________ Linux Registered User n. 373835
Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum |
|
Back to top |
|
|
Scen Retired Dev
Joined: 29 Jul 2003 Posts: 2470 Location: Padova, Italy
|
Posted: Fri Jun 08, 2007 7:41 am Post subject: Re: CFLAGS... considerazioni. |
|
|
to.alex wrote: | CInsomma è buono per il singolo applicativo, se di piccole dimensioni, dedicato al calcolo intensivo, e se si ha tanto tempo per provare. Per ottimizzare un sistema operativo non è certo il metodo migliore.
E da qui ho capito che ogni applicativo dovrebbe avere delle proprie CFLAGS, magari con dei meccanismi simili a quelli degli overlay o delle use flags.
|
Per me il nocciolo della questione è proprio questo.
Ok, con Gentoo puoi impostare delle CFLAGS globali disumane e compilarti tutto il sistema, con le conseguenze che tutti noi conosciamo
Altrimenti, imposti delle CFLAGS di base "sicure" e poi gestisci i casi particolari pacchetto per pacchetto.
Questa seconda cosa (gestibile senza grossi problemi con vari trucchi o strumenti "esterni"), purtroppo, non è ancora gestita in modo "trasparente" da Portage in quanto, come hai detto tu
to.alex wrote: |
Certo potrebbe diventare una tragedia per gli sviluppatori, che potrebbero vedersi segnalati bug, che dipendono esclusivamente dalle cflag usate dagli utenti,
| . _________________ I was born in a deep forest/I wish I could live here all my life/I am made from stones and roots/My home, these woods and roads
All my life I loved this sound/Of the woods all around/Eagles flies where the winds blows free
Journey is my destiny |
|
Back to top |
|
|
Dece Apprentice
Joined: 23 Nov 2004 Posts: 291 Location: Bologna/Rimini Italy
|
Posted: Fri Jun 08, 2007 8:15 am Post subject: Re: CFLAGS... considerazioni. |
|
|
to.alex wrote: | non sarebbe meglio avere un controllo più fine sulle CFLAG, così come lo si ha sulle USE flag? Magari pensando a dei meccanismi di overlay per far convivere CFLAG consigliate, raccomandate, obbligatorie, e impostate dall'utente? |
Quando si usa gentoo, è facile entrare in un periodo durante il quale viene voglia di provare le più svariate CFLAGS e vedere come vanno: l'importante è che alla fine si capisca che la vera potenza di gentoo non sta nello scovare CFLAGS stra-ottimizzate, ma nella sua flessibilità che consente ad ogni utente di crearsi e gestirsi un sistema come meglio gli aggrada
In parole povere, il gioco di ottimizzare le CFLAG non vale la candela (imho, ma anche secondo molti): già il fatto di ottimizzare con -march è un notevole passo avanti rispetto ad altre distro.
Personalizzare le CFLAG per pacchetto invece è utile per motivi particolari: ad esempio un tale pacchetto che compila solo con la tale flag, o senza un'altra... ma questo volendo si può già fare
Ciao _________________ http://www.last.fm/user/Dece/ |
|
Back to top |
|
|
|
|
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
|
|