Май 28 2010

Prelink

Published by

Чтобы разобраться, что происходит при прелинкинге, нужно вспомнить о том, что подавляющее большинство Linux-приложений не содержит в себе весь необходимый для их работы код, а использует т.н. разделяемые библиотеки. И обычно программы при сборке связываются с такими библиотеками динамически, то есть необходимые функции вызываются из них в ходе загрузки программы. В одних случаях это происходит быстро, в других — раздражающе медленно.И бороться с этим перекомпиляцией и оптимизацией почти бесполезно — выигрыш в скорости не превышает нескольких процентов.

Однако операция динамического связывания программы с опорными библиотеками всегда происходит одинаково. И потому возникает предположение — а нельзя ли выполнить его раз и навсегда? Можно, и именно в этом — в сохранении библиотечных связей в исполняемом файле программы, — и заключается прелинкинг (его не следует смешивать со статической сборкой программ).

в большинстве, если не во всех, дистрибутивах ставится стандартным менеджером пакетов

запускаем

prelink -avfmR

опции доступны в хелпе

в результате софт запускается быстрее.

работает система стабильно и шустро, но в случае возникновения проблем

prelink -ua

отмена предварительного связывания

Запускать каждый раз после установки/обновлении/переустановки софта, чтобы все программы были предварительно связаны

P.S. Есть приятный «побочный» эффект — уменьшает аппетиты софта относительно памяти

13 responses so far

13 Responses to “Prelink”

  1. viton 05 Сен 2010 at 17:40

    А какие есть минусы?

  2. megabakson 05 Сен 2010 at 23:39

    минусы…лично я не сталкивался
    да и в тырнетах не встречал проблем с ним

  3. vnmmon 15 Сен 2010 at 20:19

    спасибо.

  4. unikumon 18 Ноя 2010 at 14:56

    2vnmm, есть ряд проблем — http://www.gentoo.org/doc/en/prelink-howto.xml#doc_chap4

  5. megabakson 18 Ноя 2010 at 20:23

    так там только проблемы самого прелинка + пара весьма редких случаев

  6. vurdalakon 22 Ноя 2010 at 21:20

    KDE’s loading time can be greatly reduced after prelinking. If you inform KDE that it has been prelinked it will disable the loading of kdeinit (as it isn’t required anymore) which speeds up KDE even more.

    Set KDE_IS_PRELINKED=1 in /etc/env.d/*kdepaths* to inform KDE about the prelinking.

  7. megabakson 22 Ноя 2010 at 21:54

    проверим :)

  8. vurdalakon 01 Дек 2010 at 14:17

    prelink -avfmR

    А зачем флаг -f? Нам ведь не нужно при каждом обновлении связывать уже связанные программы. Достаточно сделать это только для новых или измененных.

  9. unikumon 02 Дек 2010 at 21:06

    2vurdalak, вреда не будет.

  10. Diviuson 10 Июн 2011 at 21:38

    Из минусов: однажды запуск прелинк убил мне Убунту.

  11. megabakson 10 Июн 2011 at 21:49

    glibc-2.13?
    других вариантов нет
    в 2.13-r1 уже пофиксили

  12. GespentKommunismuson 12 Дек 2011 at 23:01

    Не поверишь, но prelink разгрузил память моей свежеустановленной генте почти в 2 раза. А я уже матом начал ругаться.

  13. DeadWarrioron 25 Апр 2017 at 20:49

    Это прекрасно.

Trackback URI | Comments RSS

Leave a Reply


*

Powered by WordPress