prelink

Админ админу - друг, товарищь и man!

Модератор: Cerberus

Аватара пользователя
Дыбра
Добрый Админ
Сообщения: 5437
Зарегистрирован: Чт мар 31, 2005 16:54
Пол: мужской
Откуда: Выкса
Контактная информация:

prelink

Непрочитанное сообщение Дыбра » Вт май 04, 2010 23:13

Натолкнулся тут на эту штуку. Реально так ускоряет работу системы в целом и загрузку программ в частности за счет динамического связывания программ.
Один из резервов верховного главнокомандования в деле повышения быстродействия Linux-системы - механизм предварительного связывания или, по простому, прелинкинга (prelinking).

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

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


Для работы достаточно установить пакет prelink (он есть в большинстве дистрибутивов) и запустить команду

Код: Выделить всё

prelink -avfmR


Разница заметна :)
Администратор сайта "Виртуальная Выкса"

Аватара пользователя
57EA17h
Злобный Админ
Сообщения: 1265
Зарегистрирован: Чт мар 31, 2005 17:12
Пол: мужской
Откуда: Выкса
Контактная информация:

Re: prelink

Непрочитанное сообщение 57EA17h » Ср май 05, 2010 23:24

что плохо у предварительного связывания, ОСь становится очень плохо обновляема, т.к. нашли, например, в glibs ошибку, вышел патч. Глибы и так долго собираются, а если за ней, даже при малейшем фиксе, нужно будет практически всю систему пересобирать - пошлёшь всё к чёрту достаточно быстро. Может на рабочих станциях ещё и оправдано, на серверных платформах - вряд-ли, ведь обычно на сервере всё один раз запустилось и ушло на много-много дней в постоянную работу.
Не давай юзерам прав — они и без прав юзеры!

Аватара пользователя
Дыбра
Добрый Админ
Сообщения: 5437
Зарегистрирован: Чт мар 31, 2005 16:54
Пол: мужской
Откуда: Выкса
Контактная информация:

Re: prelink

Непрочитанное сообщение Дыбра » Ср май 05, 2010 23:28

Да нет, нормально там все с обновляемостью. После обновления библиотек опять запускается команда "prelink -avfmR" и все зависимости анализируются по-новой. Хотя в принципе соглашусь, что на серверах оно скорее всего значительного прироста не даст, так как запуск чего-либо там вещь довольно редкая.
Администратор сайта "Виртуальная Выкса"

Ответить

Вернуться в «*nix»