Задался сегодня вопросом оптимизации системы и наткнулся на интересную вещь называемую prelink. О ней и пойдет дальше речь. Попробую объяснить, что такое прелинкинг и зачем он нужен.

Большинство используемых нами LINUX-приложений не содержит в себе все необходимые компоненты для работы, а используют разделяемые библиотеки. Приложения связанны с такими библиотеками динамически, то есть при запуске программы, она вызывает необходимые функции по ходу своей загрузки. Так вот этот момент и есть узкое место в оптимизации, т.к. на определение и вызов функций уходит наше драгоценное время. Все операции динамического связывания программы с опорными библиотеками всегда происходят одинаково. Тут возникает вопрос, возможно ли выполнить операцию динамического связывания один раз и наслаждаться ускоренным запуском приложений? Ответ очевиден - можно! И в этом нам поможет prelink. Prelink сохраняет библиотечные связи в исполняемом файле программы, поле чего, программе уже не нужно самой искать все свои связи. Более быстрый запуск ощутим.

Процесс установки пропущу, сразу перейду к конфигурации. Для начала правим /etc/prelink.conf внеся в него все пути к исполняемым файлам и библиотекам, которые вы собираетесь подвергнуть процедуре предварительного связывания. После этого можно запустить процесс предварительно связывания prelink -avfmR. Если команда не сработала, то нужно указать полный путь, например у меня в дебиане был /usr/sbin/prelink.
Смысл опций команды следующий: -a - Prelink all binaries and dependent libraries found in directory hierarchies specified in /etc/prelink.conf. Normally, only binaries specified on the command line and their dependent libraries are prelinked.
-v - Verbose mode. Print the virtual address slots assigned to libraries and what binary or library is currently being prelinked.
-f - Force re-prelinking even for already prelinked objects whose dependencies are unchanged. This option causes new virtual address space slots to be assigned to all libraries. Normally, only binaries or libraries which are either not prelinked yet, or whose dependencies have changed, are prelinked.
-m - When assigning addresses to libraries, allow overlap of address space slots provided that the two libraries are not present together in any of the binaries or libraries. This results in a smaller virtual address space range used for libraries. On the other hand, if prelink sees a binary during incremental prelinking which puts together two libraries which were not present together in any other binary and were given the same virtual address space slots, then the binary cannot be prelinked. Without this option, each library is assigned a unique virtual address space slot.
-R - When assigning addresses to libraries, start with a random address within the architecture-dependent virtual address space range. This can make some buffer overflow attacks slightly harder to exploit, because libraries are not present on the same addresses across different machines. Normally, assigning virtual addresses starts at the bottom of the architecture-dependent range.

По желанию можно добавить prelink в cron. Для ежедневного запуска прелинковки, создайте файл /etc/cron.daily/prelink, в который поместите выше упомянутую команду prelink -avfmR затем сделайте его исполняемым chmod +x /etc/cron.daily/prelink и перезапустите сервис cron.

Прибавка в скорости загрузки очевидная, но не все так гладко. Тестировал prelink на двух машинах, на одной из которых было 256 ОЗУ, на другой 2гб ОЗУ. На 2гб ОЗУ prelink действительно отрабатывает свою функцию на все 100%, на машине с 256мб ОЗУ актуальность prelink немного падает, потому что недостаток оперативной памяти, вследствии постоянная работа со swap'ом возвращают скорость загрузки приложений в состояние до "прелинкинга".










Последние новости


План занятий

Обучение детей от года до 3 лет плаванию, как правило, проходит в три этапа. На первом этапе ребенок должен адаптироваться к воде, избавиться от страха перед глубиной, неизвестной средой. Намного проще дети привыкают к бассейну, где есть бортики, вода теплая и прозрачная. Чуть сложнее дети адаптируются к открытым водоемам с темной и прохладной ...
Читать далее »

Гимнастика от 2 лет до 2 лет 6 месяцев

1. Самостоятельная ходьба. 2. Бег вдогонку за взрослым или к взрослому в разном темпе. 3. Руки вверх, потянуться – «деревья большие большие», развести руки в стороны. 4. Ходьба по доске, приподнятой над полом на 15–20 см. 5. Приседания. 6. Подъем туловища с опорой на ладони в положении лежа на животе. 7. Хлопк...
Читать далее »

Проблема: ожоги, ушибы, травмы

Немного повзрослев, ребенок начинает интересоваться источниками огня, что чревато ожогом. При незначительном ожоге необходимо поврежденный участок тела поместить под холодную проточную воду, а затем обработать антиожоговым аэрозолем. В период выздоровления применяют массаж, который способствует улучшению лимфо– и кровотока. В резуль...
Читать далее »

Проблема: плоскостопие

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

Рефлекторные движения

Рефлекторные гимнастические упражнения, В основе которых лежат врожденные двигательные рефлекторные реакции, проводятся первые три пять месяцев жизни ребенка, когда еще не утрачены безусловные двигательные рефлексы – «автоматическая походка», ладонно ротовой рефлекс, хоботковый рефлекс, сохранение равновесия, защитно оборонительные рефлексы. Рефлекторные гимнасти...
Читать далее »

Техника выполнения: растирание

Прямолинейное растирание Выполняется концевыми фалангами одного или нескольких пальцев. Движение проводится прямолинейно одной рукой или обеими, иногда с отягощением. Круговое растирание Проводится с помощью круговых движений концевыми фалангами одного или нескольких пальцев. Кисть располагается с опорой на основании ладони, а манипуляции выполняют в сторону мизинца одной рук...
Читать далее »

Проблема: пупочная грыжа

Пупочная грыжа – это патологическое состояние, в котором через несколько расширенное пупочное кольцо происходит выпячивание брюшины, сальника и даже кишечника. Причина заболевания следующая: вследствие дефекта передней брюшной стенки и пупочного кольца проявляется округлое или овальное выпячивание. Чаще факторами, провоцирующими повышение внутрибрюшного давления, являются кашель, запоры ...
Читать далее »