12.07.2015 Views

img - Xakep Online

img - Xakep Online

img - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

WARNINGwarningРедактируем конфигурацию утилитыupdate-initramfsВ установке prelinkдля Ubuntu нетнеобходимости.Этот дистрибутивиспользуетальтернативныйметод, называемыйDT_GNU_HASHи реализованныйна уровне корневойбиблиотеки (glibc).Readahead в графике bootchartренние функции, константы и т.д. Эта особенность, с однойстороны, давала им преимущество в скорости загрузки, а сдругой — создавала проблемы сосуществования библиотекв памяти (что, если две библиотеки будут загружены впамять по одному адресу?). Проблемы надо было решать,поэтому появился формат ELF (его создатели на самом делебыли поклонниками книг Толкиена :)), который снимал сисполняемых файлов ответственность за выбор адресасвоего размещения в виртуальной памяти и перекладывалее на динамический линковщик. Отныне адреса загрузкиприложений, библиотек и всех их символов (переменных,констант, функций т.д.) вычислялись динамически на этапезагрузки.ELF позволил UNIX/Linux сделать огромный шаг вперед истать системой, способной загружать и исполнять огромноеколичество приложений, слинкованных с таким жеколичеством библиотек, без всяких проблем. Однако с точкизрения производительности это был провал. Процедурадинамического связывания очень быстра, и при запускеприложений, зависящих всего от нескольких библиотек,она не вносит в процесс заметных задержек, но если этозапуск громоздкого приложения с зависимостями порядка50 библиотек, то задержка может быть весьма существенной(вплоть до нескольких десятков секунд).Так называемое пре-связывание наделяет ELF-файлы наиболеевыгодной чертой формата a.out. Запускаемые файлымодифицируются таким образом, чтобы уже включать в себярезультат динамического связывания и, соответственно,заранее знать собственные адреса в памяти процесса и нетратить на их вычисление время в течение запуска.Процедура пре-связывания была предложена сотрудникомRed Hat Jakub Jelinek еще в 2004 году и оказалась оченьудачным методом повышения скорости запуска приложений.Согласно тестам, она может дать прирост, равный 50%от первоначальной скорости запуска, а в особо тяжелыхслучаях (OpenOffice, KDE, Gnome) — и того больше. При этомдля ускорения системы достаточно запустить всего однукоманду и немного подождать.Да, задействовать механизм пре-связывания действительнопросто. Для этого уже упомянутый выше Jakub Jelinekнаписал программу под названием prelink. Она доступнапрактически в любом Linux-дистрибутиве, поэтому собиратьиз исходников ничего не придется. Просто установи пакетыprelink, используя пакетный менеджер дистрибутива, ивыполни следующую команду:# prelink -avmRАргументы командной строки в этом случае значат следующее:• v — âûâîäèòü áîëüøå èíôîðìàöèè íà ýêðàí;• a — ïîäâåðãíóòü ïðå-ñâÿçûâàíèþ âñå áèíàðíûåôàéëû;• m — ñîõðàíèòü âèðòóàëüíóþ ïàìÿòü (íóæíî, åñëèáèáëèîòåê î÷åíü ìíîãî);• R — ðàíäîìèçèðîâàòü ïîðÿäîê ñëåäîâàíèÿ ó÷àñòêîâïàìÿòè (ïîâûøàåò óðîâåíü çàùèòû îò àòàê íàñðûâ ñòåêà).После окончания выполнения приложения можно начинатьрадоваться ускорению. Однако стоит помнить о несколькихограничениях:1. Prelink не способен увеличить скорость загрузки бинарников,скомпилированных без опции '-fPIC'. К сожалению,таких библиотек достаточно много, обычно сборщики пакетовнарочно отключают этот флаг для увеличения производительностиприложения;2. Prelink не умеет обрабатывать библиотеки проекта wine,поэтому об ускорении Windows-софта придется забыть;3. Некоторые статические библиотеки могут перестатьзапускаться после обработки prelink;4. После установки новых приложений или библиотек операциюпрелинкинга рекомендуется повторить.Для удаления prelink делаем так:# prelink -auДалее можно тереть пакет из системы.ПРЕДВАРИТЕЛЬНАЯЗАГРУЗКА ИЛИ PRELOADХорошим дополнением к prelink станет демон preload,реализующий механизм предварительной загрузки библиотекдля часто используемых приложений. Работая в фоне,preload анализирует действия пользователя и составляетсписок наиболее часто используемых приложений. Вдальнейшем эта информация применяется для заблаговременнойзагрузки приложений и необходимых им библиотекв память, благодаря чему холодный запуск программызанимает намного меньше времени.Демон preload может существенно повысить скорость загрузкиприложений, но произойдет это только в том случае,если система оснащена достаточно большим объемомпамяти. Два гигабайта — это минимум, при котором preloadINFOinfo• Свой вариантprelink естьи в Mac OS X. Тамон носит имя«prebinding».• Реализация preloadдля Windows носитимя «Prefetcher»(позднее «Super-Fetch») и доступна,начиная с Windows XP.• Вместоклассическойсистемы init,дистрибутив Ubuntuиспользует системупараллельнойзагрузки сервисовupstart, котораяможет сократитьсреднее времяинициализациисистемы до 15-20секунд.• cryopid.berlios.de —домашняя страницаCryoPID.• people.redhat.com/jakub/prelink.pdf —описание Prelink отавторов.• behdad.org/preload.pdf — описание Preloadот авторов.• www.checkpointing.org — список ПО длязаморозки процессов.• dmtcp.sourceforge.net—распределеннаясистема заморозкипроцессов.XÀÊÅÐ 08 /139/ 10 095

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!