[Linux-Biella] PTYS

Marco Ermini linux@bilug.linux.it
Thu, 4 Jul 2002 15:19:52 +0200


On Thu, 4 Jul 2002 14:32:27 +0200, CIARROCCHI Paolo
<Paolo.CIARROCCHI@vodafoneomnitel.it> wrote:

[...]
> Qui non sono preparato...
> Se ho un .srm posso ricompilarlo con --rebuild e --target i686?

No, se hai un RPM sorgente. Se hai un pacchetto tipo pacchetto.i386.rpm puoi
solo installarlo. Ma se hai pacchetto.src.rpm allora puoi compilarlo con rpm
--rebuild. Se non usi altre opzioni prende il default del sistema (queste
opzioni sono impostabili da /usr/lib/rpm/rpmrc), altrimenti utilizzi lo switch
--target e lui prende l'opzione del sistema corrispondente al target scelto in
/usr/lib/rpm/rpmrc. Ad esempio se in /usr/lib/rpm/rpmrc hai:

optflags: i586 -O2 -march=i586
optflags: i686 -O2 -march=i686 -funroll-loops
optflags: athlon -O2 -march=athlon
optflags: ia64 -O2

allora se ricompili un sorgente rpm con

rpm --rebuild --target athlon pacchetto.src.rpm

lui ricompila prendendo le opzioni corrispondenti all'architettura athlon in
/usr/lib/rpm/rpmrc, ovvero -O2 -march=athlon. Ovviamente puoi configurarle, ad
esempio io ho modificato i686 mettendo "-funroll-loops" (e' solo un esempio) e
quindi se uso i686 come target utilizzera' "-O2 -march=i686 -funroll-loops"
ricompilando. Non serve installare il sorgente rpm e modificare lo spec, basta
battere rpm --help e leggere tutte le opzioni per scoprire queste ed altre
meraviglie ;-)



> > non sono masochista :-)
> Sorry, non mi riferivo al tuo masochismo, scherzavo con Simone.

Non si sa mai, c'e' tanta gente con tendenze strane ;-)



[...]
> Si si, mi riferivo al fatto che Mandrake dichiara qualcosa 
> tipo 10 15% in piu' di "prestazioni" di certi software, cosa
> della quale non mi sono mai accorto.

secondo me e' 10% di marketing in piu' ;-)

ripeto, puo' darsi che su singoli software qualche miglioramento ci sia. Io
non ne sono cosi' convinto; se bastasse cambiare uno switch all'RPM per
migliorare le prestazioni lo farebbero tutti... io sono anzi quasi convinto
del contrario; cioe', per avere miglioramenti reali devi compilare un software
proprio per *la tua* macchina ed ottimizzare in modo particolare quel
software; ho la netta impressione che spalmare un'opzione di compilazione su
tutti i software a caso come fa Mandrake rischia persino di essere
controproducente, perche' magari il nuovo Zentium VI ottimizza i software per
386 meglio di quelli per 586 (e non e' cosi' remota come opzione; se tu scrivi
assembly molto semplice la CPU puo' fare branch prediction e parallelizzarlo,
ma se gia' presupponi due sole pipelines - come sul Pentium classico, il 586 -
magari lo Zentium VI non riesce ad eseguirlo altrimenti). Ripeto sono solo
impressioni a non ho dimostrazioni tecniche da offrire, ma sono abbastanza
convinto che il mio "naso" non sbagli piu' di tanto su queste cose.

Comunque, se io facessi una distro, o distribuirei solo pacchetti sorgenti,
costringendo l'utente a ricompilare per la sua specifica macchina (ma nessuno
tranne i maniaci userebbe, e giustamente, la mia distro, anche perche' come
detto i miglioramenti sarebbero pochi rispetto ad una grossa perdita di
tempo), o compilerei tutto per 386 tranne il kernel; spalmare a caso opzioni
di compilazione non mi pare saggio. Secondo me non cambia un piffero ed e'
solo marketing...

Se uno vuole ottimizzare un software, e' ancora valida la regola di guardare
nei sorgenti C, compilare creando il listing assembly e vedere come il
compilatore lo trasforma, e ripetere la cosa con diverse opzioni di
compilazione. Questo per esempio e' quello che fanno gli autori di Mesa3D.
Quando sai come viene generato il codice sai come migliorarlo (anche se con i
processori moderni pure questo e' sempre meno vero).


> Ho letto invece che Gentoo compilata con gcc3.1 dia
> miglioramenti visibili a occhio nudo,
> credo grazie al notevole passo in avanti del compilatore,
> dico bene?

Mah, puo' darsi. Ma non siamo gia' ad un gcc un po' piu' evoluto?


ciao

-- 
Marco Ermini
http://www.markoer.org - ICQ UIN 50825709 - GPG KEY 0x64ABF7C6
Never attribute to malice that which is adequately explained
by stupidity. (a sig from Slashdot postings)