Меню Рубрики

Установка prelink в ubuntu

compizomania

Азбука в Linux для начинающих и не только. Я знаю только то, что ничего не знаю, но другие не знают и этого. Сократ

Страницы

06 января 2014

Как ускорить загрузку программ в Ubuntu/Linux Mint и производные

В этой статье мне хотелось бы рассказать о двух утилитах, которые помогут ускорить работу системы Linux, а конкретно — запуск приложений: prelink и preload.

1. Prelink преобразовывает разделяемые библиотеки и выполняемые файлы таким образом, чтобы уменьшить количество требуемых перераспределений памяти при разрешении зависимостей и, таким образом, ускоряет запуск программ.

2. Preload кеширует часто запускаемые программы и библиотеки в памяти системы. После некоторого использования демон составляет список часто запускаемых программ и будет держать их в памяти для повторных запусков.
Примечание . Кеш (Cache) — накопитель, быстродействующая память, куда складываются программы, с которыми вы работаете.

Обе утилиты есть в Центре приложений Ubuntu/Менеджере программ (Linux Mint), откуда вы можете их установить, а лучше следуйте инструкции, которая поможет не только установить, но и настроить.

Установка и настройка Prelink

Выполните следующую команду в терминале для установки:

sudo apt-get install prelink

Следующая команда применит предварительное связывание ко всем выполняемым файлам:

Для периодического запуска демона нужно отредактировать файл prelink, открыв его следующей командой в текстовом редакторе:

sudo gedit /etc/default/prelink

Найдите строку и измените параметр:

PRELINKING=unknown
на
PRELINKING=yes

А теперь запустите prelink:

Выполните следующую команду:

sudo apt-get install preload

Как правило конфигурация preload после установки, по умолчанию не требует изменений.

Почему не одна программа, а две? Всё просто. Prelink, запускается раз в день и модифицирует ELF файлы. Preload программа-демон, которая постоянно отслеживает интенсивность запуска программ и на основании собранной статистики загружает компоненты в память.

Вот и всё. Теперь вы можете проверить скорость запуска программ в системе.

источник

Уменьшаем время запуска программ с помощью prelink

Дата добавления: 27 августа 2010

Как работает prelink
Во время запуска программы, она связывается со своими библиотеками, необходимыми для работы (например Qt или GTK). Библиотеки подгружаются динамически и на это требуется довольно много времени из-за чего мы и ждем пока запустится программа. Особенно это актуально для пользователей KDE так как подгружается огромная и навороченная библиотека вывода графических приложений — Qt.
Утилита Prelink позволяет связать все подгружаемые библиотеки непосредственно с исполняемыми файлами программ. Prelink — это механизм предварительного связывания необходимых библиотек с программой. И это даёт очень большой прирост производительности! Многие отмечают, что теперь «холодный» старт программы занимает до 50% меньше времени, чем это было до «прелинкинга». В основе prelink по сути лежит старый-добрый механизм кэширования.

Установка
Давайте рассмотрим установку на примере Debian (если у вас другой дистрибутив, то просто замените apt на свой пакетный менеджер (например yum)):
От суперпользователя!

Теперь нужно отредактировать конфигурационный файл программы prelink:
От суперпользователя!

Если вы нашли строку такого вида: PRELINKING=unknown , то измените её на PRELINKING=yes
Это включит prelink.
По желанию в конфигурационном файле можно настроить интервалы работы программы.

Теперь, когда все установлено и настроено можно запустить процесс прелинкинга:
От суперпользователя!

-Эта команда начнет прелинкинг приложений. Обычно команда выполняется несколько минут. Увеличение скорости запуска программ, будет заметно после перезапуска приложений.

Для ознакомления с полным списком опций утилиты prelink выполните prelink —help

Автор: Subsanek, дата: 27 августа 2010 , время: 13:25:31 (MSK).
>Из датчиков, возросла нагрузка на своп файл.

Побочное явление прелинкинга — увеличение используемой памяти, что не удевительно т.к по сути это кэширование.

Автор: Анон, дата: 27 августа 2010 , время: 13:58:40 (MSK).
>так как подгружается огромная и навороченная библиотека вывода графических приложений — Qt.

Во-первых, размер библиотек не имеет ни какого значения. Имеет значение их количество.
Во-вторых, в этом вашем Гноме посмотрите зависимости любой гномо-проги, вот уж кому точно нужен prelink.
В-третьих, не пишите о том, в чем не разбираетесь. Еще лучше, не пишите вообще.

Автор: Subsanek, дата: 27 августа 2010 , время: 14:39:12 (MSK).
>Во-первых, размер библиотек не имеет ни какого значения.

>Во-вторых, в этом вашем Гноме

>не пишите о том, в чем не разбираетесь. Еще лучше, не пишите вообще.

Автор: Анон, дата: 27 августа 2010 , время: 14:44:47 (MSK).
> После выполнения команды необходима перезагрузка.

а это еще зачем ?
вендовые привычки ?

Автор: Subsanek, дата: 27 августа 2010 , время: 15:13:11 (MSK).
>а это еще зачем ?

Чтобы увидеть результать работы сабжа.

Автор: marlock, дата: 27 августа 2010 , время: 15:52:14 (MSK).
> Откуда у меня они?

Автор: Subsanek, дата: 27 августа 2010 , время: 16:14:20 (MSK).
>убунта же

И причем здесь Windows? И вообще я на Debian.

Автор: bosha, дата: 27 августа 2010 , время: 17:32:34 (MSK).
Увеличение скорости запуска программ, будет заметно после перезапуска приложений.

Читайте также:  Установка предохранителей в переменной сети

Таки вот так правильно. Перезагрузка нужна исключительно ядру, а на него prelink не особо действует. Точнее вообще не влияет. И вообще сомнительный прирост это даст. В Gentoo — да. При правильных настройках даст примерно от 10% до 30%. В Debian — вряд ли на глаз будет что-то заметно. Только в довольно специфичных тестах.

источник

Пингвин с реактивным ранцем: Ускоряем запуск приложений в Linux

Содержание статьи

Linux становится все тяжелее и тяжелее. Сегодня уже никого не удивишь приложениями, время запуска которых составляет несколько минут, окружениями рабочего стола, занимающими 500 Мб оперативки, и нерасторопной загрузкой ОС, напоминающей поход женщины по магазинам. Есть ли способы все это оптимизировать, существует ли лекарство от ожирения пингвинов, где взять ножик, чтобы отрезать все лишнее? Попробуем разобраться.

За все время существования толстых пингвинов (период, отсчитываемый примерно с момента появления GTK+ 2.X, X Free 4.X и Linux 2.6) было придумано немало способов ускорения запуска приложений и всей ОС.

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

Предварительное связывание или PRELINK

Пре-связывание есть ни что иное, как модификация запускаемого файла с целью включить в него результаты динамического связывания библиотек. Что это значит?

В стародавние времена приложения были просты и использовали в своей работе всего несколько динамически загружаемых системных библиотек. То было время господства формата исполняемых файлов a.out, особенность которых заключалась в предельной простоте.

Файлы a.out всегда точно знали, по какому адресу они будут загружены в память процесса, и по каким адресам будут располагаться их внутренние функции, константы и т.д. Эта особенность, с одной стороны, давала им преимущество в скорости загрузки, а с другой — создавала проблемы сосуществования библиотек в памяти (что, если две библиотеки будут загружены в память по одному адресу?). Проблемы надо было решать, поэтому появился формат ELF (его создатели на самом деле были поклонниками книг Толкиена :)), который снимал с исполняемых файлов ответственность за выбор адреса своего размещения в виртуальной памяти и перекладывал ее на динамический линковщик. Отныне адреса загрузки приложений, библиотек и всех их символов (переменных, констант, функций т.д.) вычислялись динамически на этапе загрузки.

ELF позволил UNIX/Linux сделать огромный шаг вперед и стать системой, способной загружать и исполнять огромное количество приложений, слинкованных с таким же количеством библиотек, без всяких проблем. Однако с точки зрения производительности это был провал. Процедура динамического связывания очень быстра, и при запуске приложений, зависящих всего от нескольких библиотек, она не вносит в процесс заметных задержек, но если это запуск громоздкого приложения с зависимостями порядка 50 библиотек, то задержка может быть весьма существенной (вплоть до нескольких десятков секунд).

Так называемое пре-связывание наделяет ELF-файлы наиболее выгодной чертой формата a.out. Запускаемые файлы модифицируются таким образом, чтобы уже включать в себя результат динамического связывания и, соответственно, заранее знать собственные адреса в памяти процесса и не тратить на их вычисление время в течение запуска. Процедура пре-связывания была предложена сотрудником Red Hat Jakub Jelinek еще в 2004 году и оказалась очень удачным методом повышения скорости запуска приложений. Согласно тестам, она может дать прирост, равный 50% от первоначальной скорости запуска, а в особо тяжелых случаях (OpenOffice, KDE, Gnome) — и того больше. При этом для ускорения системы достаточно запустить всего одну команду и немного подождать.

Да, задействовать механизм пре-связывания действительно просто. Для этого уже упомянутый выше Jakub Jelinek написал программу под названием prelink. Она доступна практически в любом Linux-дистрибутиве, поэтому собирать из исходников ничего не придется. Просто установи пакеты prelink, используя пакетный менеджер дистрибутива, и выполни следующую команду:

Аргументы командной строки в этом случае значат следующее:

  • v — выводить больше информации на экран;
  • a — подвергнуть пре-связыванию все бинарные файлы;
  • m — сохранить виртуальную память (нужно, если библиотек очень много);
  • R — рандомизировать порядок следования участков памяти (повышает уровень защиты от атак на срыв стека).

После окончания выполнения приложения можно начинать радоваться ускорению. Однако стоит помнить о нескольких ограничениях:

  1. Prelink не способен увеличить скорость загрузки бинарников, скомпилированных без опции ‘-fPIC’. К сожалению, таких библиотек достаточно много, обычно сборщики пакетов нарочно отключают этот флаг для увеличения производительности приложения;
  2. Prelink не умеет обрабатывать библиотеки проекта wine, поэтому об ускорении Windows-софта придется забыть;
  3. Некоторые статические библиотеки могут перестать запускаться после обработки prelink;
  4. После установки новых приложений или библиотек операцию прелинкинга рекомендуется повторить. Для удаления prelink делаем так:

Далее можно тереть пакет из системы.

Читайте также:  Установка готового комплекта видеонаблюдения

Предварительная загрузка или PRELOAD

Хорошим дополнением к prelink станет демон preload, реализующий механизм предварительной загрузки библиотек для часто используемых приложений. Работая в фоне, preload анализирует действия пользователя и составляет список наиболее часто используемых приложений. В дальнейшем эта информация применяется для заблаговременной загрузки приложений и необходимых им библиотек в память, благодаря чему холодный запуск программы занимает намного меньше времени.

Демон preload может существенно повысить скорость загрузки приложений, но произойдет это только в том случае, если система оснащена достаточно большим объемом памяти. Два гигабайта — это минимум, при котором preload даст выигрыш, при меньших объемах он только помешает. Пакет preload можно найти в составе любого современного дистрибутива, поэтому для его установки достаточно использовать стандартный менеджер пакетов:

$ sudo apt-get install preload

Далее следует отредактировать конфигурационный файл /etc/preload.conf. Демон вполне сносно работает и при стандартных настройках, однако каждый из нас индивидуален и использует систему по-своему, поэтому, вероятно, ты захочешь подогнать preload под себя. Перечислю основные опции в секции model:

  • cycle — частота обращений к системе для сбора статистики. Значение по умолчанию — 20 секунд. В большинстве случаев изменять его не имеет смысла, однако если ты чувствуешь, что preload вредит производительности системы, увеличь значение.
  • halflife — задает интервал, по истечению которого preload будет забывать накопленную статистику на 50%. Значение по умолчанию — 168 часов (неделя). Рекомендуется уменьшить значение тем, кто часто меняет софт, и увеличить тем, кто может месяцами/годами пользоваться одним и тем же набором приложений.
  • minsize — минимальный размер объекта (программы, библиотеки), обрабатываемого preload. Значение по умолчанию — 2 000 000 байт (около 2 Мб), поэтому preload не будет выполнять предварительную загрузку файлов меньшего размера. Нет особой нужды менять это значение, однако если тебе кажется, что памяти будет достаточно и для кэширования более мелких приложений — уменьши значение.
  • memtotal, memfree, memcached — эти три опции взаимосвязаны и указывают на потребляемый preload объем памяти. Для расчетов используется следующая формула: (общее количество памяти х memtotal) + (память, доступная при старте х memfree) + (кэш х memcached).

Секция system также содержит три интересных для нас опции:

  • mapprefix — список каталогов, файлы которых должны быть предварительно загружены (имей в виду, что это не только бинарники и библиотеки, но и другие типы файлов).
  • exeprefix — список каталогов с бинарными файлами.
  • sortstrategy — способ оптимизации операций ввода-вывода. Значение по умолчанию — 3 (оптимизация для жестких дисков). Для твердотельных дисков лучше всего подойдет значение 1, для сетевых файловых систем — 2.

На этом все, можешь перезагрузить preload:

$ sudo /etc/init.d/preload reload

Как и любой другой демон, preload ведет логи, которые ты сможешь найти в файле /val/log/preload.log. Информация о текущем состоянии preload и его кэше доступна в файле /var/lib/preload/preload.state.

Предварительное чтение или READAHEAD

Ubuntu, а также некоторые другие современные дистрибутивы Linux, используют систему readahead во время инициализации системы. Как и демон preload, readahead заранее загружает необходимые компоненты приложений в оперативную память с целью ускорить их запуск. Разница заключается лишь в том, что readahead частично работает внутри ядра Linux и оптимизирован специально для ускорения процесса инициализации системы.

Система использует утилиту /sbin/readahead-list, которая читает файлы /etc/readahead/boot и /etc/readahead/desktop и загружает перечисленные в них файлы во время инициализации системы. Эта простая и эффективная схема, которая, однако, имеет и очевидные недостатки. Дело в том, что любая стандартная установка Ubuntu со временем претерпевает изменения в количестве установленных и загружаемых во время старта ОС сервисов. Списки файлов в этом случае становятся неактуальными и требуют обновления. Параметр ядра profile позволяет перестроить списки предварительно загружаемых файлов. Для его включения перезагрузи систему, во время загрузки нажми для входа в меню загрузчика, далее нажми и добавь в конец списка параметров ядра слово profile. Нажми для загрузки. Инициализация системы в режиме профилирования займет время, поэтому будь готов потерпеть.

Заморозка процесса или CRYOPID

Иногда лучший способ ускорить запуск приложения — просто не останавливать его. Для многих юниксоидов работающие сутками напролет браузер, почтовый и jabber-клиенты — обычное дело. Такие приложения просто нет смысла завершать, они могут понадобиться в любую минуту.

Так почему бы не развить эту идею дальше и не сделать так, чтобы вместо остановки процессов их состояние можно было бы заморозить, а позже — восстановить, избавив программу от необходимости каждый раз производить сложную и трудоемкую инициализацию внутреннего состояния? Не мы первые, не мы последние. CryoPID — простое приложение для заморозки процессов и последующего их восстановления. Прога не требует прав root или модификации ядра, работает на архитектурах x86 и amd64 и, что самое главное, не привязывает замороженный процесс к конкретной машине. После заморозки процесс превращается во что-то вроде самораспаковывающегося архива, ты легко можешь перенести его на другую машину и просто запустить. Пакет CryoPID есть далеко не в каждом дистрибутиве, поэтому его придется установить самостоятельно:

Читайте также:  Установка vag com с диска

$ cd /tmp
$ wget http://dagobah.ucc.asn.au/wacky/cryopid-0.5.9.1i386.tar.gz
$ tar -xzf cryopid-0.5.9.1-i386.tar.gz
$ cd cryopid-0.5.9.1/src
$ make
$ mkdir

После этого можно запустить программу следующим образом:

/bin/freeze имя-файла pid-поцесса

К сожалению, CryoPID имеет несколько проблем, включая неполную поддержку сокетов и X-приложений, а также генерирует мусор в списке процессов вместо имени восстановленной программы.

Шустрая загрузка UBUNTU

Ubuntu быстра, на самом деле быстра. Скорость загрузки этого дистрибутива оставляет далеко позади многие другие линуксы и заставляет завидовать поклонников BSD-систем. Однако нет пределов совершенст ву, и в этом разделе мы попробуем ускорить ускоренное.

1. Отключи таймаут в grub. По умолчанию загрузчик ждет 3 секунды, чтобы пользователь смог изменить параметры загрузки. Открой файл /boot/grub/menu.lst, найди строку «timeout=3» и замени 3 на 0.

2. Отключи splash. Ubuntu splash-screen, показываемый во время загрузки системы, малоинформативен и требует время на свою загрузку. Поэтому открываем все тот же /boot/grub/menu.lst и убираем опции «quiet» и «splash» из параметров загрузки ядра.

3. Отключи IPv6. Раньше поддержка пока ненужного протокола IPv6 в Linux была реализована в виде загружаемого модуля, поэтому для ее отключения требовалось лишь слегка отредактировать файл /etc/ modprobe.d/aliases. Сегодня IPv6 вшит прямо в ядро, поэтому для его отключения ядру должен быть передан параметр «ipv6.disable=1». Сделать это можно, отредактировав файл /boot/grub/menu.lst.

4. Отключи проверку на выход из спящего режима. Во время своей загрузки ядро выполняет проверку, выходит ли комп из спящего режима (suspend) или выполняет обыкновенную загрузку. Занимает эта процедура всего одну секунду, однако ее тоже можно сэкономить, добавив опцию «noresume» к параметрам загрузки ядра. Естественно, владельцам ноутбуков этого делать не стоит.

5. Оптимизируй initramfs. Образ RAM-диска используется для хранения низкоуровневых компонентов ОС, которые должны быть доступны еще до монтирования корневой файловой системы. По умолчанию этот образ содержит всевозможные компоненты, подобранные на все случаи жизни. Без них образ грузится в память быстрее, что способст вует сокращению общего времени загрузки системы. Открываем файл /etc/initramfs-tools/initramfs.conf, находим строку «MODULES=most» и заменяем ее на «MODULES=dep». Далее пересобираем все доступные образы только с необходимыми компонентами:

$ sudo update-initramfs -k all -u

После обновления ядра образы будут сгенерированы автоматически.

6. Отключи ненужные сервисы. По умолчанию в Ubuntu активировано множество фоновых сервисов на все случаи жизни. Вряд ли тебе нужны они все, поэтому идем отключать. Открываем System q„ Administration <„ Services и видим список сервисов. Выбор кандидатов на отключение зависит от конкретной ситуации, но в большинстве случаев безболезненно можно пожертвовать следующим:

  • Bluetooth Manager — менеджер устройств Bluetooth
  • Check for new hardware drivers — проверка новых версий проприетарных драйверов
  • Evolution Alarm Notifier — сигнализатор прихода почты в Evolution
  • Print Queue Applet — апплет очереди печати
  • Tracker — служба поиска и индексирования

7. Отключи автостарт ненужных приложений. Во время входа в систему происходит автозапуск большого количества различных приложений (в основном это апплеты). Не все они нужны, поэтому открой System ra Preferences p„ Applications startup и удали все, что считаешь ненужным (например, апплет bluetooth). Запуск оставшихся приложений можно немного оптимизировать с помощью следующего трюка: отредактируй строку запуска каждого из них так, чтобы она приняла примерно такой вид:

sh -c «sleep 10; exec bluetooth-applet»
sh -c «sleep 20; exec /usr/lib/evolution/2.28/evolution-alarm-notify»

Ускоряем запуск тяжеловесов

Многие тяжеловесные приложения, используемые нами повседневно, слишком медлительны и неповоротливы. Нередко на их запуск уходит больше минуты, что довольно сильно раздражает и мешает сконцентрироваться на работе. Попробуем это исправить.

  • OpenOffice.org. Этот офисный пакет рекордсмен по потреблению ресурсов и неповоротливости, поэтому его оптимизации необходимо уделить особое внимание. Открываем Tools p„ Options, переходим к подразделу «Memory». Устанавливаем значение «Number of steps» равным 20, это уменьшит размер истории отмены. В секции «Graphics cache» устанавливаем значение «Use for OpenOffice. org» в 128, «Memory per object» — в 20. В подсекции «Java» убираем галочку с опции «Use a Java runtime environment». Оптимизация позволяет поднять скорость запуска и время реакции.
  • Firefox. Огнелис — вторая по уровню прожорливости и тормознутости программа. Начиненная достаточно большим количеством плагинов, она превращается из огненной лисы в замороженную черепаху, но есть два пути ускорить ее запуск. Первый — удалить все ненужные и редко используемые плагины. Это поднимет и скорость запуска, и производительность. Второй — оптимизировать базу sqlite, используемую для хранения данных профиля:

/.mozilla/firefox/ -name *.sqlite \
-exec sqlite3 <> VACUUM \;

Делать это необходимо регулярно (например, раз в неделю), так как базы постоянно растут и захламляются.

источник

Добавить комментарий