# prelink+upx [risolto]

## djinnZ

ho notato la segnalazione di incompatibilità nella guida. Qualcuno ha maggiori info?

Comporta ancora problemi di sicurezza ed incomatibilità con pax/grsec/rsbac?

----------

## !equilibrium

 *djinnZ wrote:*   

> ho notato la segnalazione di incompatibilità nella guida. Qualcuno ha maggiori info?
> 
> Comporta ancora problemi di sicurezza ed incomatibilità con pax/grsec/rsbac?

 

la documentazione è datata 2 aprile 2007 e riporta ancora incompatibilità con pax/grsec/rsbac ecc.

a parte ciò non vedo un'utilità oggettiva nell'uso del prelinking (IMHO).

tutto lo sbattimento da fare per tenere l'intero sistema in prelinking solo per poter guadagnare qualche secondo all'avvio delle applicazioni?   :Rolling Eyes: 

----------

## djinnZ

Se hai un imbranata che apre e chiude sempre le stesse applicazioni (OOo ed i due mozilla, ho messo un contatore per l'avvio di thunderbird, 50 volte al giorno) e se le vede partire con un poco di ritardo le avvia dieci volte conta... fidati che conta. (purtroppo tirarle il collo è illegale)

Sto ancora a pensare se vale o meno la pena di usare l'upx (avevo letto che c'erano problemi, ancora di più con pax) o rimanere con il prelinking. E se c'è un modo per farlo fare in automatico ad emerge (usare upz) senza ammattire o se qualcuno ci ha già provato.

Almeno ci fosse qualche test di velocità e compatibilità, solo "rumors"...  :Evil or Very Mad: 

Non so cosa abbia trovato con google ieri sera ma mi era uscito un documento senza l'indicazione tra l'altro (oltre a darmi una sfilza interminabile di link a "niente", ma ormai ci sto facendo l'abitudine).

----------

## !equilibrium

 *djinnZ wrote:*   

> Se hai un imbranata che apre e chiude sempre le stesse applicazioni (OOo ed i due mozilla, ho messo un contatore per l'avvio di thunderbird, 50 volte al giorno) e se le vede partire con un poco di ritardo le avvia dieci volte conta... fidati che conta. (purtroppo tirarle il collo è illegale)

 

 :Laughing:  comprendo

ma mi sa che fai prima ad ignorare questo genere di richieste di supporto tecnico  :Wink: 

----------

## drizztbsd

Quasi tutti i DE seri se ne accorgono se fai più di un click e avviano una volta sola l'applicazione (startup notification).

Per firefox/thunderbird prelink è praticamente inutile, ha più senso usare LDFLAGS="-Wl,--as-needed -Wl,-O1" (prelink ha dato problemi più di una volta, soprattutto quando provi a fare undo)

----------

## djinnZ

Non sto parlando di più istanze ma di bestia che avvia thunderbird, scarica, lo chiude, apre l'office, lo chiude, riavvia TB per mandare un singolo messaggio e se tarda un poco inizia a cliccare nervosamente sull'icona (quella almeno la ho appena cancellata) lamentandosi che il computer è lento. Per l'intera giornata. (e l'orchite cresce)

Esattamente che differenza c'è tra usare -Wl,-O1 e -Wl,--as-needed -Wl,-O1, non solo in termini di prestazioni ma anche di dimensioni dell'eseguibile?

@drizzt

mai riscontrati problemi con -O3 o -Os (che sono le ottimizzazioni che uso)

per quanto sopra mi pongo il problema della dimensione degli eseguibili ed avevo pensato di provare con upx ad aggirare il collo di bottiglia dell'HD, (nella speranza che prima o poi sia possibile un bel package.cflags per ottimizzare seriamente).

----------

## xdarma

 *djinnZ wrote:*   

> 
> 
> @drizzt
> 
> mai riscontrati problemi con -O3 o -Os (che sono le ottimizzazioni che uso)
> ...

 

In giro si dice che -O3 aumenti la dimensione dei binari e che non dia reali vantaggi in velocità (se non in casi particolari).

Se usi -Os e poi usi il prelink... vanifichi l'ottimizzazione per la dimensione.

-O2 non ti piace? e provare a caricare tutto in ram?

----------

## djinnZ

Al massimo avevo pensato al preloading delle librerie interne di OOo e mozilla e delle principali (però è un lavoraccio), ho solo 750MB di ram a disposizione e finchè i miei clienti non imparano ad usare lo scanner e smettono di mandarmi i documenti in jpg a 900dpi farei guai.

con -O3 ho una sensazione di maggiore fluidità e mi trovo abbastanza bene -Os la uso solo quando è necessario (alcuni pacchetti hanno problemi già con -O2) ed in generale far dimagrire un poco il sistema (anche se solo di un paio di GB, ora sono ad 8 ) non sarebbe male, a prescindere.

Per ragioni pratiche il sistema è lo stesso su tutti i pc anche se i servizi non vengono usati, così se si skianta il server posso sempre usare uno dei due client al suo posto cambiando solo il disco, sul portatile poi ci faccio le prove e quindi devo avere tutto.

L'aumento di dimensione è trascurabile (e tale da vanificare il beneficio dell'ottimizzazione ma rispetto ai soli tempi di avvio).

Per questo mi ero orientato sull'upx (anche pensando al caricamento in ram) ma mi frena il rischio di problemi con pax più che riunciare al prelinking (di cui non sono un grande fanatico).

----------

## !equilibrium

@djinnZ: fai prima ad usare le LDFLAGS suggerite da drizztbsd, montare la dir /tmp in ram e vivere felice, piuttosto che complicarti inutilmente la vita con -Os (che usi erroneamente), -O3 e prelink e robaccia simile.

p.s.: please correggi il tuo ultimo post perchè è incomprensibile.

----------

## djinnZ

 *!equilibrium wrote:*   

> fai prima ad usare le LDFLAGS suggerite da drizztbsd, montare la dir /tmp in ram e vivere felice, piuttosto che complicarti inutilmente la vita con -Os (che usi erroneamente), -O3 e prelink e robaccia simile.

 

perchè erroneamente? il kerberos per esempio può essere compilato e funzionare correttamente solo con -Os o -O su march=athlon*, tanto per dirne una. (ora non mi vengono a mente ma ci sono tre o quattro pacchetti che lo richiedono)

si, potrei anche provare, ma con le normali -Wl,-O1 che differenza passa? E mi rimane sempre il dubbio se usare o meno upx (provare posso provare ma ho paura che poi mi si blocca tutto è questo a frenarmi).

 *!equilibrium wrote:*   

> p.s.: please correggi il tuo ultimo post perchè è incomprensibile.

 

[OT] ora inizio ad essere decisamente stufo. Ogni volta è sempre la stessa storia, apro una risposta, me ne dimentico e la finisco dopo un poco di tempo, quando clicco su invia mi chiede di confermare perchè la sessione è scaduta e sistematicamente saltano pezzi o rispuntano fuori parti parti cancellate. Non ho capito se dipende da firefox o dal forum.

----------

## !equilibrium

 *djinnZ wrote:*   

> perchè erroneamente? il kerberos per esempio può essere compilato e funzionare correttamente solo con -Os o -O su march=athlon*, tanto per dirne una. (ora non mi vengono a mente ma ci sono tre o quattro pacchetti che lo richiedono)

 

(sempre che abbia capito correttamente la tua affermazione)

non discuto sul fatto che -Os o -O sia esplicitamente richiesto da determinati pacchetti (forse una decina in tutto portage, rapporto 10:15000),

ma sulla questione dell'uso di -Os al fine di *velocizzare* tutto il sistema (l'hai scritto tu, non io: "mai riscontrati problemi con -O3 o -Os, che sono le ottimizzazioni che uso"). l'effetto ottenuto è esattamente il contrario: le applicazioni si avvieranno sì più velocemente (1 o 2 secondi in meno), ma avranno un notevole calo di performance nel momento in cui l'applicazione viene usata, soprattutto le applicazioni che necessitano di molta cpu e risorse. -Os è nato per quelle CPU che non hanno del tutto o hanno un quantitativo di cache L1/L2 irrisorio (meno di 64K), dove il sezionamento del binario in parti troppo piccole genera un rallentamento che si ripercuote negativamente sull'intero sistema (= la cpu perde più tempo a smembrare il binario che ad eseguirlo). Per questo -Os è largamente usato in ambiente embedded, perchè riduce la grandezza del binario ed evita che il binario stesso sia un collo di bottiglia per tutte quelle architetture hardware ultra *slim*. Ma da qua a dire che -Os può *velocizzare* tutto il sistema della propria gentoo box è un'affermazione più da gentoo ricer che altro.

Ovviamente ciò non ti vieta di usare -Os sul tuo notebook/desktop, ognuno è libero di fare quello che vuole, però ricordati che non tutte le versioni di gcc funzionano bene con -Os; la cosa si aggrava ulteriormente con determinate -march, e spesso e volentieri -Os produce binari non perfettamente funzionanti anche con la giusta accoppiata di gcc e -march. Quindi è un inutile rischio che corri, soprattutto se hai un processore abbasta recente e dove puoi tranquillamente sfruttare tutta la potenza di -O2.

----------

## djinnZ

@equilibrium: OK non c'eravamo capiti. Dicevo solo che non ho trovato problemi con prelink e soprattutto con firefox su un sistema dove ho solo -Os/-O (che uso solo per necessità, non mi chiedere di farti l'elenco ma sono pochi) e -O3 in risposta a drittzt.

Di base il sistema è compilato -O3 -fomit-frame-poiter e linkato -Wl -O1 con prelink, con alcune eccezioni obbligate, ho voluto precisare. (alle volte dovrei imparare ad essere meno frettoloso)

Vorrei vedere se riesco a ridurne lo spazio occupato (in termini di da 8GB a 6 non 8 a 7,5 che è quello che posso sperare con ottimizzazioni diverse da -O3) e migliorarne le prestazioni. Il preloading lo ho scartato a priori perchè non è supportato e non ho voglia di impazzire (oltre al fatto che mi ritroverei con la swap supersfruttata alla windozz maniera e non ridurrei l'occupazione di spazio) per vedere se come e cosa può essere convertito (problemi di compilazione inclusi, non so neppure se sia ancora possibile con le lib attuali). Dovrei decidermi a mascherare i pacchetti compilati con -Os a prelink tanto per cominciare ma visto che è poca roba non mi voglio levare la testa (e non è che sia un grande fan di questa funzione, per questo sto pensando di cambiare).

UPX ha i seguenti problemi: incompatibilità con prelinking, possibilità di intordurre buffer overflow (riportata più come rumor che non altro, per questo ho chiesto lumi, non riesco a trovare nulla di serio sull'argomento) e (sempre presunta più che altro) incompatibilità con pax. In più non ho trovato un cavolo di dato sulle prestazioni dei bianri compressi nei confronti dei binari normali. Google diventa sempre più frustrante.

Ritornando al -Os, tanto per fare fantascianza  :Laughing:  , sempre nell'idea di usare ottimizzazioni diffrenti per ogni pacchetto, potrebbe essere d'aiuto a velocizzare; esempio se hai uno script dove viene richiamato ciclicamente il comando sort per piccoli file il risparmio nei tempi di caricamento bilancia il rallentamento nell'esecuzione. Ovviamente se compili un mattone come firefox -Os avrai solo un pachiderma ancora più tale ma forse awk potrebbe andar meglio visto come viene usato il più delle volte.

Va da se che si parlerebbe di compilare con ottimizzazioni specifiche ogni singolo applicativo ed è improponibile da un punto di vista pratico (anche se conosco un folle che mi ha fatto questa proposta oscena, ma so che ho la calamita).

----------

## xdarma

 *djinnZ wrote:*   

> Al massimo avevo pensato al preloading delle librerie interne di OOo e mozilla e delle principali (però è un lavoraccio), ho solo 750MB di ram a disposizione

 

direttamente da HOWTO: Mount / in RAM and load apps instantly

 *Quote:*   

> computer must have a spare 176MB of RAM or so. 
> 
>  (Depends how much you want to load into RAM)

 

Probabilmente l'esperimento di caricare tutto in ram ti porta via meno tempo della ricompilazione.

----------

## Kernel78

Scusa, io provo a vederla da un diverso punto di vista.

Prendi in considerazione di sostituire tutti i comandi collegati alle icone e raggiungibili dal menu con un banale script che si limiti a impostare un semaforo e eseguire il programma originario collegato a quella icona o menu (e magari aprire un pop-up offensivo in caso il semaforo sia ancora presente).

Spiegazione sintetica ma visto che sto ancora dormendo spero mi possiate scusare ...

se serve più tardi provo a esprimermi in italiano comprensibile  :Wink: 

----------

## drizztbsd

as-needed potrebbe farti comodo dato che ha un boost di performance similare a prelink e senza avere le paccate di pax

----------

## djinnZ

 *Drizzt Do` Urden wrote:*   

> as-needed potrebbe farti comodo dato che ha un boost di performance similare a prelink e senza avere le paccate di pax

 

uhm, però certo non è che riduco di molto la dimensione degli eseguibili e devo ricompilare, la archivio per l'immediato futuro (e mi levo dalle scatole prelink) ma ancora mi rimane la questione di upx, il punto è questo: se anche incrementa le prestazioni oltre a ridurmi l'occupazione di spazio su disco mi ci tuffo se invece crea problemi certi con pax lo scarto.

Non ho ancora capito perchè mi hai suggerito di usare "-Wl,--as-needed -Wl,-O1" invece di "-Wl,--as-needed, -O1"

Vedo che il buon flameyes continua a spuntare sempre fuori, c'è qualcosa che non ha fatto o sperimentato?!  :Twisted Evil: 

@kernel: il popup offensivo è fuori discussione, il capo, nonchè augusto genitore ha promesso di rompermi la testa dopo la faccenda delle parolacce alla richiesta di backup automatico, se ci riprovo. Ed in ogni caso uno script di avvio rallenterebbe ulteriormente, il problema non è che si blocca o crasha ma che mi devo sentire le solite lagne.

@xdarma: lo so ma poi mi ci trovo io a lavorare e la ram non mi basta mai (esagero al contrario, apro tutte le applicazioni e non le chiudo mai), in più c'è il wine od il qemu sempre attivo e quello la mangia la ram.

----------

## !equilibrium

puoi anche fare il tweak dei parametri della VM, in modo da usare il massimo della RAM e meno possibile le page cache dello swap (vedi vm.swapppiness).

di opzioni per la VM con cui *trastullarsi allegramente* ce ne sono un bel po.

(IMHO) io comunque continuo a sostenere che se l'utonto si lamenta del fatto che FFX, OOo o altro software si apre in 5 sec. invece che in 2, la soluzione va ricercata più tra chi sta tra il monitor e la sedia, piuttosto che andare a solleticare i limiti di gcc o altri escamotage esoterici.

----------

## djinnZ

 *!equilibrium wrote:*   

> puoi anche fare il tweak dei parametri della VM, in modo da usare il massimo della RAM e meno possibile le page cache dello swap (vedi vm.swapppiness).
> 
> di opzioni per la VM con cui *trastullarsi allegramente* ce ne sono un bel po.

 

Non con un prg di m**** che si mangia dai 350MB ai 500 di RAM solo per fare delle somme e qualche moltiplicazione in esecuzione sotto wine.

 *!equilibrium wrote:*   

> (IMHO) io comunque continuo a sostenere che se l'utonto si lamenta del fatto che FFX, OOo o altro software si apre in 5 sec. invece che in 2, la soluzione va ricercata più tra chi sta tra il monitor e la sedia, piuttosto che andare a solleticare i limiti di gcc o altri escamotage esoterici.

 

Il problema non è questo, tra prelink e ottimizzazione le cose vanno bene.

Ho pensato di ridurre l'occupazione su disco (ho una partizone da 20GB, e sono già a 16 occupati, non mi piace girare "stretto") con upx, ma se mi rallenta l'avvio (rispetto all'attuale -O3+prelink od il futuribile -O3+--as-needed) non va bene. Qesto è il problema che mi rimane ed ovviamente non c'è un cavolo di dato sulle prestazioni. Mi sa che mi tocca fare la prova, appena ho tempo.

Quanto al problema tra monitor e sedia, il primo è anche il capo nonchè padre e non gli posso rompere la testa di certo o abituarlo diversamente.

----------

## !equilibrium

 *djinnZ wrote:*   

> Non con un prg di m**** che si mangia dai 350MB ai 500 di RAM solo per fare delle somme e qualche moltiplicazione in esecuzione sotto wine.
> 
> Quanto al problema tra monitor e sedia, il primo è anche il capo nonchè padre e non gli posso rompere la testa di certo o abituarlo diversamente.

 

un bell'upgrade hardware non è contemplato?

+RAM e +potenza di calcolo; ti eviti inutili mal di pancia e perdita di capelli.

----------

## drizztbsd

[quote="djinnZ"] *Drizzt Do` Urden wrote:*   

> Non ho ancora capito perchè mi hai suggerito di usare "-Wl,--as-needed -Wl,-O1" invece di "-Wl,--as-needed, -O1"

 

Perché sono LDFLAGS non CFLAGS, con -Wl gcc passa il comando a ld che ottimizza in linking

```
       -O level

           If level is a numeric values greater than zero ld optimizes the output.  This might take significantly

           longer and therefore probably should only be enabled for the final binary.

```

quindi non c'entra NULLA con -O di gcc

----------

## djinnZ

Qualche prova ho inziato a farla e non si comporta troppo male per quanto riguarda l'ottimizzazione (mi auguro di non aver mai bisogno del debugger) ma dove posso trovare un minimo di matriale per vedere come modificare emerge, per applicare direttamente l'upx?

Vorrei evitarmi di leggere tutto il codice.

edit: come non detto, glibc non vuol saperne di andare con FILE_OFSET=64... ma non era a posto? Mi sa che devo installarmi il bashrc per gestire le ottimizzazioni per pacchetto  :Crying or Very sad: 

----------

