Existe algum ponto em usar o Prelink mais?

11

Ao longo dos anos, usando várias caixas Linux, eu comecei a usar o pré- link ritualmente para acelerar os tempos de carregamento dos aplicativos.

No entanto, os benefícios de executar o pré-link são negados toda vez que um pacote é reinstalado, pois todas as suas dependências e dependentes precisam ser re-pré-conectados.

Essa pré-ligação pode causar vários problemas, e um deles é a invalidação binária do MD5, o que é problemático para coisas que comparam o MD5 versus as revisões upstream ou usam o MD5 para determinar se o binário foi ou não alterado e, portanto, não se deseja que seja limpo após a remoção do pacote .

Recentemente, os computadores ficaram muito mais rápidos, e o benefício que o pré-vínculo gera agora é dificilmente notável.

O uso do pré-link ainda é um conceito racional, ou pode ser descartado casualmente e deixado para trás como algo de uma época passada?

Kent Fredric
fonte

Respostas:

4

Você não pode lê-lo até 23 de julho de 2009, a menos que esteja inscrito no LWN.net, mas pode achar http://lwn.net/Articles/341244/ útil.

David Pashley
fonte
Em seguida, você pode fornecer um "link de assinante" para este artigo.
Wazoox 16/07/09
5
Eu sempre me sinto mal por usar links de assinantes. Como se eu estivesse roubando tudo ou algo assim.
18119 David Pashley
2
Concordo. Não me importo de fornecer links de assinantes para contatos diretos (amigos ou colegas de trabalho) quando encontro um artigo interessante, mas parece errado publicá-lo publicamente.
Christopher Cashell
1

Eu não diria que ele deve ser descartado arbitrariamente, no entanto, eu definitivamente diria que seu uso deve ser pensado um pouco mais.

Em uma máquina moderna de ponta que está sendo atualizada com frequência, o pré-link pode não ser uma otimização útil. No entanto, ainda existem vários casos em que pode valer a pena usar. Por exemplo, em uma máquina mais antiga ou mais avançada, ou em máquinas bastante estáticas e que não sofrem alterações ou atualizações frequentes. Também pode valer a pena se você tiver uma alta taxa de programas sendo executados repetidamente (posso pensar em algumas situações em que você pode ter programas sendo executados em rápida sucessão ou em paralelo em que a pré-ligação pode melhorar o desempenho).

Em suma, você precisa considerar sua situação específica e depois decidir se os benefícios superam o trabalho e esforço adicionais.

Christopher Cashell
fonte
1
"uma alta taxa de programas sendo executados repetidamente" - se você estiver nessa situação, os binários e as bibliotecas terminarão no cache do sistema de arquivos. A única vez prelinking iria ajudar é se você é tão memória fome que você tem muito pouco fs cache disponível
Daniel Lawson
2
A pré-ligação acelerará o início do programa, mesmo se o programa estiver armazenado no cache do sistema de arquivos. É certo que, quando o programa (e as bibliotecas associadas) são armazenados em cache, o aumento de desempenho é menos perceptível. No entanto, dependendo da taxa de execução dos programas, alguns microssegundos podem ser adicionados para eventualmente fazer a diferença.
9139 Christopher Cashell
1

Eu diria que o pré-link é definitivamente útil em servidores de desktop multiusuários, como servidores LTSP usados ​​em escolas e lan houses, por exemplo. O pré-link não apenas acelera o carregamento do aplicativo, mas também melhora a utilização da RAM e o desgaste do disco devido à contenção entre usuários, permitindo muito mais usuários simultâneos em um servidor.


fonte
0

Eu acho que com os preços da memória, a pré-ligação decrescente está se tornando menos útil. Se você ainda deseja acelerar um pouco as coisas, pode consultar a pré - carga .

Nick Anderson
fonte
Eu tentei pré-carregar, apenas achei que os tempos de inicialização eram mais lentos enquanto ele ficava lá mastigando os dois núcleos, fazendo o readahead. E também por alguma razão eu não consigo entender o que causou a morte do X durante a inicialização. Além disso, se você não reiniciar com frequência, o pré-carregamento deixará de ser útil.
21712 Kent Kentric
0

Deixo essa decisão para a versão do SO. Se, por padrão, o sistema operacional escolher chamar a pré-ligação regularmente usando o cron, então pode ser que não seja tão útil. Espero que os criadores das distribuições tenham pensado antes de optar por adicionar / remover a opção de pré-link por padrão. Então, eu vou com eles, em vez de analisar as coisas novamente.

Saurabh Barjatiya
fonte
Não é realmente padrão, é um pacote que você precisa instalar e, se não estiver instalado, não recebe material pré-vinculado. Se instalado, ele tende a criar um script cron, que está desativado por padrão, que você deve ativar manualmente.
21710 Kent
É padrão no fedora e não desativado por padrão. É reniced para 19, mas não off. Foi mesmo desde Fedora 6 ou 7.
Saurabh Barjatiya
0

O Gentoo usa o pré-link. Eles solucionam o problema do md5sum ignorando as informações de pré-link que calculam o hash.

O Prelink sempre fornecerá um aumento de velocidade, embora possa se tornar cada vez menos perceptível à medida que o hardware fica mais rápido. A única maneira de saber ao certo o seu hardware é desativar o pré-link e ver como você gosta da desaceleração no lançamento de aplicativos.

Sidenote: O OS X também costumava fazer uma forma de pré-ligação, mas que foi abandonada em favor de um cache vinculado que o vinculado mantém. Melhor dos dois mundos, nenhuma mudança binária e nenhuma sobrecarga real versus vinculação normal. Espero que o Linux pegue essa idéia em algum momento :)

Update: Eu tentei recentemente prelinking no Linux , e por uma compilação de cscope com muitos arquivos e processos recebi um aumento de velocidade de 5%.

w00t
fonte
1
Realmente não ... é algo que ainda terá de instalar e configurar, digo isto porque eu estou usando o Gentoo. E você não pode exatamente "desativar" o pré-link, você só pode parar de executar o pré-link ou desassociar todo o sistema. Além disso, por algum motivo sem o meu conhecimento, o paludis tem problemas com binários pré-vinculados e, sem um gancho de desfazer o pré-vínculo (sem suporte), ele deixa os binários para trás, produzindo fragmentos. Recentemente eu descobri alguns aplicativos do KDE que foram deixados para trás por causa do fato de antes de eu instalado o gancho, e eles estavam no caminho antes de os mais novos em um local diferente, causando seg de
Kent Fredric
Possivelmente, ativar a otimização do vinculador (-Wl, -O1) ¸ e as novas alterações na alocação de gnu-hash são mais parecidas com as mudanças no OSX, o que é possivelmente uma opção mais eficaz.
21710 Kent Kentric
Devo admitir que já faz um tempo desde que usei o gentoo ... Desde então, mudei para o OS X :). Lembro-me de um teste que fiz uma vez no OS X: inicie todos os aplicativos ao mesmo tempo e no momento (cerca de 1 minuto iirc). Em seguida, remova todas as informações de pré-link e inicie todos os aplicativos novamente. Aquele tempo levou 5 minutos ... Isso foi em 2005 em uma torre Mac, uma verdadeira fera.
W00t
1
Como contraponto à sua ideia de que as acelerações de pré-ligação podem se tornar menos visíveis: elas provavelmente se tornarão mais importantes à medida que os programas disparam no uso do uso de bibliotecas carregáveis ​​em tempo de execução. Um gvim de 2009 usou 55 libs de tempo de execução. Um de 2 anos atrás usou 73. 'mount' de 2009 usou 7, mount a partir de hoje, usa 10 com 4 deles em / usr / lib64 e 6 em / lib64 ... então eles estão se expandindo, ficando maiores e mais espalhados . - o mesmo de sempre - assim que o HW fica mais rápido, o SW fica muito mais complexo para absorver o impulso.
Astara 23/05
@astara true, mas o crescimento no uso da biblioteca não é tão rápido quanto o crescimento do disco rígido e da velocidade da memória.
W00t 24/05