Y a-t-il un intérêt à utiliser Prelink?

11

Au fil des ans, en utilisant diverses boîtes Linux, je me suis habitué à utiliser prelink rituellement pour accélérer les temps de chargement des applications.

Cependant, les avantages de l'exécution de la pré-liaison sont annulés à chaque réinstallation d'un package, car toutes ses dépendances et ses dépendantes doivent être re-liées.

Cette pré-liaison peut provoquer plusieurs problèmes, et l'un en tant que tel est l'invalidation MD5 binaire, qui pose problème pour les choses qui comparent MD5 vs révisions en amont ou utilisent MD5 pour déterminer si le binaire a été modifié et n'est donc pas souhaité être nettoyé lors de la suppression du package .

Récemment, les ordinateurs sont devenus beaucoup plus rapides, et les avantages de la pré-liaison sont désormais à peine notables.

L'utilisation du pré-lien est-elle toujours un concept rationnel, ou peut-elle être abandonnée avec désinvolture et laissée comme quelque chose d'une époque révolue?

Kent Fredric
la source

Réponses:

4

Vous ne pouvez pas le lire avant le 23 juillet 2009, sauf si vous êtes abonné à LWN.net, mais vous trouverez peut-être http://lwn.net/Articles/341244/ utile.

David Pashley
la source
Ensuite, vous pouvez fournir un "lien d'abonné" à cet article.
wazoox
5
Je me sens toujours mal d'utiliser des liens d'abonné. Comme si je les arrachais ou quelque chose comme ça.
David Pashley
2
Je suis d'accord. Cela ne me dérange pas de fournir des liens d'abonné à des contacts directs (amis ou collègues) lorsque je tombe sur un article intéressant, mais il me semble mal de le publier publiquement.
Christopher Cashell
1

Je ne dirais pas qu'il devrait être rejeté arbitrairement, mais je dirais certainement que son utilisation devrait être réfléchie un peu plus.

Sur une machine moderne haut de gamme fréquemment mise à jour, le pré-lien peut ne pas être une optimisation utile. Cependant, il existe encore un certain nombre de cas où cela pourrait être utile. Par exemple, sur une machine ancienne ou inférieure, ou sur des machines qui sont assez statiques et ne subissent pas de modifications ou de mises à jour fréquentes. Cela pourrait également être utile si vous avez un taux élevé de programmes exécutés de manière répétée (je peux penser à quelques situations où vous pourriez avoir des programmes exécutés en succession rapide ou en parallèle où la pré-liaison pourrait améliorer les performances).

Dans l'ensemble, vous devez tenir compte de votre situation spécifique, puis décider si les avantages l'emportent sur le travail et les efforts supplémentaires.

Christopher Cashell
la source
1
"un taux élevé de programmes exécutés à plusieurs reprises" - si vous êtes dans cette situation, les fichiers binaires et les bibliothèques se retrouveront dans le cache de votre système de fichiers. La seule fois où la préconnexion serait utile est si vous êtes tellement affamé de mémoire que vous avez très peu de cache fs disponible
Daniel Lawson
2
La pré-liaison accélérera le démarrage du programme même si le programme est stocké dans le cache du système de fichiers. Certes, lorsque le programme (et les bibliothèques associées) sont mis en cache, l'augmentation des performances est moins perceptible. Cependant, selon le taux de programmes en cours d'exécution, quelques microsecondes peuvent s'additionner pour éventuellement faire la différence.
Christopher Cashell
1

Je dirais que prelink est certainement utile sur les serveurs de bureau multi-utilisateurs tels que les serveurs LTSP utilisés dans les écoles et les cafés Internet par exemple. Non seulement le prelink accélère le chargement des applications, mais il améliore également l'utilisation de la RAM et le thrashing du disque en raison de conflits entre les utilisateurs, permettant à beaucoup plus d'utilisateurs simultanés sur un serveur.


la source
0

Je pense qu'avec la baisse des prix de la mémoire, la pré-liaison devient moins utile. Si vous voulez toujours accélérer légèrement les choses, vous pouvez vous pencher sur la précharge .

Nick Anderson
la source
J'ai essayé la précharge, je viens de trouver que cela ralentissait les temps de démarrage alors qu'il restait assis à mâcher les deux cœurs en faisant la lecture anticipée. Et pour une raison que je ne peux pas distinguer, X a également causé la mort de X au démarrage. De plus, si vous ne redémarrez pas souvent, le préchargement cesse d'être utile.
Kent Fredric
0

Je laisse cette décision à la version OS. Si par défaut le système d'exploitation choisit d'appeler prelink régulièrement à l'aide de cron, il se peut que ce ne soit pas si utile. J'espère que les créateurs de distributions ont réfléchi avant de choisir d'ajouter / supprimer l'option prelink par défaut. Je vais donc avec eux plutôt que d'analyser à nouveau les choses moi-même.

Saurabh Barjatiya
la source
euh, ce n'est pas vraiment par défaut, c'est un paquet que vous devez installer, et si ce n'est pas installé, vous n'avez pas de trucs pré-liés. S'il est installé, il a tendance à créer un script cron, qui est désactivé par défaut, que vous devez activer manuellement.
Kent Fredric
Il est par défaut sur fedora et non désactivé par défaut. Il est revu à 19 mais pas éteint. Il en est de même depuis Fedora 6 ou 7.
Saurabh Barjatiya
0

Gentoo utilise un lien préalable. Ils contournent le problème md5sum en ignorant la poule d'information de pré-liaison calculant le hachage.

Prelink vous donnera toujours une augmentation de vitesse, même si elle peut devenir de moins en moins perceptible à mesure que le matériel s'accélère. La seule façon de savoir avec certitude sur votre matériel est de désactiver le prelink et de voir comment vous aimez le ralentissement au lancement des applications.

Sidenote: OS X effectuait également une forme de pré-lien, mais cela a été abandonné au profit d'un cache lié que le lié maintient lui-même. Le meilleur des deux mondes, pas de changement binaire et pas de frais généraux réels par rapport à la liaison normale. J'espère que Linux reprendra cette idée à un moment donné :)

Mise à jour: J'ai récemment essayé la pré-liaison sur Linux , et pour une compilation de cscope avec de nombreux fichiers et processus, j'ai reçu une augmentation de vitesse de 5%.

w00t
la source
1
Ce n'est pas vraiment ... c'est toujours quelque chose que vous devez installer et configurer, je dis cela parce que j'utilise gentoo. Et vous ne pouvez pas exactement "désactiver" le pré-lien, vous pouvez seulement arrêter d'exécuter le pré-lien, ou aller annuler la liaison de tout votre système. De plus, pour une raison inconnue pour moi, paludis a des problèmes avec les binaires pré-liés, et sans crochet de non-pré-liaison (non pris en charge), il laisse les binaires derrière, ce qui donne lieu à une corruption. Récemment, j'ai découvert quelques applications KDE qui ont été laissées pour cause avant d'installer le crochet, et elles se trouvaient sur le chemin avant les plus récentes dans un endroit différent, provoquant des seg
Kent Fredric
Peut-être, l'activation de l'optimisation de l'éditeur de liens (-Wl, -O1) ¸et les nouveaux changements dans l'allocation gnu-hash sont plus proches de ce vers quoi OSX est passé, ce qui est peut-être un choix plus efficace.
Kent Fredric
Je dois admettre que cela fait un moment que je n'ai pas utilisé gentoo ... Je suis depuis passé à OS X :). Je me souviens d'un test que j'ai fait sur OS X: démarrer toutes les applications en même temps et cela (environ 1 minute iirc). Ensuite, supprimez toutes les informations de préconnexion et redémarrez toutes les applications. Cette fois, cela a pris 5 minutes ... C'était en 2005 sur une tour Mac, une vraie bête.
w00t
1
Pour contrer votre idée que les accélérations de pré-liaison peuvent devenir moins visibles: elles sont susceptibles de devenir plus importantes à mesure que les programmes montent en flèche dans leur utilisation des bibliothèques chargeables à l'exécution. Un gvim de 2009 a utilisé 55 bibliothèques d'exécution. Un d'il y a 2 ans utilisait 73. 'mount' de 2009 utilisait 7, mount à partir d'aujourd'hui, utilise 10 avec 4 d'entre eux dans / usr / lib64 et 6 dans / lib64 ... donc ils se développent, deviennent plus grands et plus étalés . - comme il l'a toujours été - dès que HW devient plus rapide, SW devient beaucoup plus complexe pour absorber le boost.
Astara
@astara true, mais la croissance de l'utilisation des bibliothèques n'est pas aussi rapide que celle du disque dur et de la vitesse de la mémoire.
w00t