Ha più senso utilizzare Prelink?


11

Nel corso degli anni usando vari box Linux, mi sono appassionato all'utilizzo del prelink ritualmente per accelerare i tempi di caricamento delle applicazioni.

Tuttavia, i vantaggi dell'esecuzione di prelink vengono annullati ogni volta che un pacchetto viene reinstallato, poiché è necessario ripetere il prelinking di tutte le sue dipendenze e le sue dipendenze.

Questo prelinking può causare molteplici problemi, e uno come tale è l'invalidazione binaria MD5, che risulta problematica per cose che confrontano le revisioni MD5 vs upstream o usano MD5 per determinare se il binario è stato modificato o meno e quindi non si desidera pulirlo al momento della rimozione del pacchetto .

Di recente, i computer sono diventati molto più veloci e il vantaggio che la resa dei prelink è ora appena percettibile.

L'uso del prelink è ancora un concetto razionale o può essere casualmente scartato e lasciato indietro come qualcosa di un'era passata?

Risposte:


4

Non puoi leggerlo fino al 23 luglio 2009 se non sei abbonato a LWN.net, ma potresti trovare utile http://lwn.net/Articles/341244/ .


Quindi potresti fornire un "link suscettibile" a questo articolo.
Wazoox,

5
Mi sento sempre male per l'utilizzo dei collegamenti degli abbonati. Come se li stessi strappando via o qualcosa del genere.
David Pashley,

2
Sono d'accordo. Non mi dispiace fornire link di abbonati a contatti diretti (amici o colleghi) quando trovo un articolo interessante, ma è sbagliato pubblicarlo pubblicamente.
Christopher Cashell,

1

Non direi che dovrebbe essere arbitrariamente scartato, tuttavia direi sicuramente che il suo uso dovrebbe essere pensato un po 'di più.

Su una moderna macchina di fascia alta che viene frequentemente aggiornata, prelink potrebbe non essere un'ottimizzazione utile. Tuttavia, ci sono ancora numerosi casi in cui potrebbe valere la pena utilizzarli. Ad esempio, su una macchina precedente o di fascia bassa o su macchine che sono abbastanza statiche e che non presentano frequenti modifiche o aggiornamenti. Potrebbe anche essere utile se hai un alto tasso di programmi eseguiti ripetutamente (posso pensare a un paio di situazioni in cui potresti avere programmi in esecuzione in rapida successione o in parallelo in cui il prelinking potrebbe migliorare le prestazioni).

Tutto sommato, è necessario considerare la propria situazione specifica e quindi decidere se i benefici superano il lavoro e lo sforzo aggiuntivi.


1
"un alto tasso di programmi in esecuzione ripetutamente" - se ti trovi in ​​quella situazione, i binari e le librerie finiranno nella tua cache del filesystem. L'unica volta che il prelinking sarebbe di aiuto è se sei così affamato di memoria che hai pochissima cache di fs disponibile
Daniel Lawson,

2
Il prelinking accelera l'avvio del programma anche se il programma è memorizzato nella cache del filesystem. Certamente, quando il programma (e le librerie associate) sono memorizzati nella cache, l'aumento delle prestazioni è meno evidente. Tuttavia, a seconda della velocità dei programmi in esecuzione, alcuni microsecondi possono sommarsi per eventualmente fare la differenza.
Christopher Cashell,

1

Direi che prelink è sicuramente utile su server desktop multiutente come ad esempio i server LTSP utilizzati nelle scuole e nei net café. Il prelink non solo accelera il caricamento delle applicazioni, ma migliora anche l'utilizzo della RAM e l'arresto del disco a causa della contesa tra utenti, consentendo a molti più utenti simultanei su un server.


0

Penso che con il calo dei prezzi della memoria il prelinking stia diventando meno utile. Se vuoi ancora velocizzare leggermente le cose, potresti esaminare il precarico .


Ho provato il precarico, ho appena scoperto che ha rallentato i tempi di avvio mentre era seduto lì a masticare entrambi i core facendo la lettura. E anche per qualche motivo che non riesco a capire, X è morto durante l'avvio. Inoltre, se non si riavvia spesso, il precarico smette di essere utile.
Kent Fredric,

0

Lascio questa decisione alla versione del sistema operativo. Se per impostazione predefinita il sistema operativo sceglie di chiamare prelink regolarmente utilizzando cron, allora altrimenti potrebbe non essere così utile. Spero che i creatori di distribuzioni abbiano pensato prima di scegliere di aggiungere / rimuovere l'opzione prelink per impostazione predefinita. Quindi vado con loro piuttosto che analizzare di nuovo le cose da solo.


ehm, non è veramente defaultable, è un pacchetto che devi installare, e se non è installato non otterrai cose prelinkate. Se installato, tende a creare uno script cron, disattivato per impostazione predefinita, che devi abilitare manualmente.
Kent Fredric,

È predefinito su fedora non spento per impostazione predefinita. Viene ridimensionato a 19 ma non spento. È stato lo stesso da Fedora 6 o 7.
Saurabh Barjatiya,

0

Gentoo usa il prelink. Aggirano il problema di md5sum ignorando la gallina info prelink calcolando l'hash.

Il prelink ti darà sempre un aumento di velocità sebbene possa diventare sempre meno evidente man mano che l'hardware diventa più veloce. L'unico modo per sapere con certezza sul tuo hardware è disattivare prelink e vedere come ti piace il rallentamento all'avvio delle app.

Sidenote: OS X faceva anche una forma di prelinking, ma che è stata abbandonata a favore di una cache collegata che il collegamento stesso mantiene. Il meglio dei due mondi, nessun cambio binario e nessun vero sovraccarico rispetto al normale collegamento. Spero che Linux prenda questa idea ad un certo punto :)

Aggiornamento: di recente ho provato il prelinking su Linux e per una compilation di cscope con molti file e processi ho ottenuto un aumento della velocità del 5%.


1
Non proprio ... la sua qualcosa ancora si deve installare e configurare, lo dico perché io sto usando Gentoo. E non puoi esattamente "disattivare" il prelink, puoi solo smettere di eseguire prelink o andare e non-ripensare l'intero sistema. Inoltre, per qualche ragione a mia insaputa, Paludis ha problemi con i binari prelinked e senza un hook annulla-prelink (non supportato) lascia i binari dietro, cedendo la rotta. Recentemente ho scoperto alcune app di KDE che erano state lasciate indietro a causa del fatto prima di installare l'hook, e si trovavano sul percorso prima delle nuove in una posizione diversa, causando seg
Kent Fredric

Probabilmente, abilitare l'ottimizzazione del linker (-Wl, -O1) ¸ e le nuove modifiche nell'allocazione di gnu-hash è più simile a ciò a cui si è spostato OSX, che è probabilmente una scelta più efficace.
Kent Fredric,

Devo ammettere che è da un po 'che non uso Gentoo ... Da allora sono passato a OS X :). Ricordo un test che ho fatto una volta su OS X: avviare tutte le applicazioni in una sola volta e che (circa 1 minuto iirc). Quindi, rimuovere tutte le informazioni di prelink e riavviare tutte le app. Quella volta ci sono voluti 5 minuti ... Era il 2005 su una torre Mac, una vera bestia.
wt

1
In contrapposizione alla tua idea che le accelerazioni di prelinking potrebbero diventare meno evidenti: è probabile che diventino più importanti man mano che i programmi salgono alle stelle nel loro uso di librerie caricabili in runtime. Un gvim del 2009 ha utilizzato 55 librerie di runtime. Uno da 2 anni fa ha usato 73. 'mount' dal 2009 ha usato 7, mount da oggi, ne usa 10 con 4 in / usr / lib64 e 6 in / lib64 ... quindi si stanno espandendo, diventando più grandi e più sparsi . - come sempre - non appena HW diventa più veloce, SW diventa molto più complesso per assorbire la spinta.
Astara,

@astara è vero, ma la crescita nell'uso della libreria non è rapida come la crescita dell'hard disk e della velocità della memoria.
wt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.