preload linux что это

Практическое применение LD_PRELOAD или замещение функций в Linux

Всем привет!
В 2010 году, shoumikhin написал замечательную статью Перенаправление функций в разделяемых ELF-библиотеках. Та статья очень грамотно написана, полная, но она описывает более харкордный способ замещения функций. В этой статье, мы будем использовать стандартную возможность динамического линкера — переменную окружения LD_PRELOAD, которая может загрузить вашу библиотеку до загрузки остальных.

Как это работает?

Да очень просто — линкер загружает вашу библиотеку с вашими «стандартными» функциями первой, а кто первый — того и тапки. А вы из своей библиотеки можете загрузить уже реальную, и «проксировать» вызовы, попутно делая что вам угодно.

Реальный Use-Case #1: Блокируем mimeinfo.cache в Opera

Мне очень нравится браузер Opera. А еще я использую KDE. Opera не очень уважает приоритеты приложений KDE, и, зачастую, так и норовит открыть скачанный ZIP-архив в mcomix, PDF в imgur-uploader, в общем, вы уловили суть. Однако, если ей запретить читать файл mimeinfo.cache, то она все будет открывать через «kioclient exec», а он-то уж лучше знает, в чем я хочу открыть тот или иной файл.

Чем может приложение открывать файл? На ум приходят две функции: fopen и open. В моем случае, opera использовала 64-битный аналог fopen — fopen64. Определить это можно, воспользовавшись утилитой ltrace, или просто посмотрев таблицу импорта утилитой objdump.

Что нам нужно для написания библиотеки? Первым делом, нужно составить прототип оригинальной функции.
Судя по man fopen, прототип у этой функции следующий:
И возвращает она указатель на FILE, либо NULL, если файл невозможно открыть. Отлично, пишем код:

Как видите, все просто: объявляем функцию fopen64, загружаем «следующую» (оригинальную), по отношению к нашей, функцию, и проверяем, не открываем ли мы файл «mimeinfo.cache». Компилируем ее следующей командой:

И запускаем opera:
И видим:
Успех!

Реальный Use-Case #2: Превращаем файл в сокет

Есть у меня проприетарное приложение, которое использует прямой доступ к принтеру (файл устройства /dev/usb/lp0). Захотел я написать для него свой сервер в целях отладки. Что возвращает open()? Файловый дескриптор. Что возвращает socket()? Такой же файловый дескриптор, на котором совершенно так же работают read() и write(). Приступаем:

Не совсем реальный Use-Case #3: Перехват C++-методов

С C++ все немного иначе. Скажем, есть у нас класс:

Но функции не будут называться «Testclass::getvar» и «Testclass::setvar» в результирующем файле. Чтобы узнать названия функций, достаточно посмотреть таблицу экспорта:
Это называется name mangling.
Тут есть два выхода: либо сделать библиотеку-перехватчик на C++, описав класс так же, каким он был в оригинале, но, в этом случае, у вас, с большой вероятностью, будут проблемы с доступом к конкретному инстансу класса, либо же сделать библиотеку на C, назвав функцию так, как она экспортируется, в таком случае, первым параметром вам передастся указатель на инстанс:

Вот, собственно, и все, о чем хотелось рассказать. Надеюсь, это будет кому-то полезно.

Источник

compizomania

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

Страницы

06 января 2014

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

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

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

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

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

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

sudo apt-get install prelink

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

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

sudo gedit /etc/default/prelink

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

PRELINKING=unknown
на
PRELINKING=yes

preload linux что это. Смотреть фото preload linux что это. Смотреть картинку preload linux что это. Картинка про preload linux что это. Фото preload linux что это

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

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

sudo apt-get install preload

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

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

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

Источник

Повысьте производительность вашей системы и приложений с помощью Preload и Prelink

preload linux что это. Смотреть фото preload linux что это. Смотреть картинку preload linux что это. Картинка про preload linux что это. Фото preload linux что это

по умолчанию Ubuntu достаточно быстраяхотя это во многом зависит от объем памяти Оперативная память и статус вашего жесткого диска, хотя, если вы используете SDD, вы получите лучшую эффективность.

Как вы заметили, некоторые программы или приложения в Ubuntu запускаются довольно долго. Это может раздражать, если они часто используют уязвимую программу.

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

Что такое предварительная загрузка?

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

На основании этих анализов Preload создать список приложений что пользователь выполняет чаще всего и при этом он отвечает за размещение этих двоичных файлов и их зависимостей в оперативной памяти. system и тем самым увеличивает время запуска приложения.

Как установить Preload на Ubuntu 18-04 и производные?

Чтобы установить это приложение в наших системах мы можем сделать это с помощью программного центра Ubuntu и найдите приложение там или с помощью Synaptic.

O если хотите, напишите в терминале следующую команду (ctrl + alt + T):

Установка завершена, мы должны перезагрузить наш компьютер.

Как только вы снова окажетесь внутри системы, Preload начнет работать в фоновом режиме и начнет выполнять свою работу по повышению скорости запуска приложения.

Само приложение должно работать без проблем, так как не требует специальной настройки.

Но у нас есть возможность редактировать значения this в следующем файле, который находится в /etc/preload.conf.

Что такое прлинк?

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

Как установить Prelink на Ubuntu 18.04 и производные?

Чтобы установить Prelink в нашей системе, Нам просто нужно открыть терминал и выполнить следующую команду:

Готово установка мы должны отредактировать этот файл:

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

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

В некоторых установках он будет отображаться как «Нет» вместо «неизвестно», в этом случае вместо «Да» будет установлено «Да».

preload linux что это. Смотреть фото preload linux что это. Смотреть картинку preload linux что это. Картинка про preload linux что это. Фото preload linux что это

Здесь нам просто нужно скопировать следующее и добавить в файл:

Наконец, мы закрываем файл и Мы даем ему разрешения с помощью этой команды:

Сейчас чтобы запустить приложение, мы просто набираем:

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

Эти ошибки, которые я вам бросаю, что-то такое:

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

Prelink сообщает вам, какую библиотеку добавить, вам просто нужно выполнить следующую команду Чтобы добавить его, вам нужно изменить только тот, который указан в предварительной ссылке:

Как только это будет сделано, мы снова запустим предварительную ссылку, и нам нужно будет добавить библиотеки, которые создают конфликт, пока предварительная ссылка не загрузится успешно.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » ПО » Повысьте производительность вашей системы и приложений с помощью Preload и Prelink

Источник

ReadMe.conf

Prelink и Preload для ускорения запуска программ в Linux

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

Prelink

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

Утилита prelink позволяет прописать связи с библиотеками непосредственно в исполняемый файл, что ускорит запуск приложения. Выполняется это без перекомпиляции приложений.

Учтите, что запускать prelink необходимо после каждого обновления библиотек и/или приложений. Можно назначить его на запуск по cron.

Preload

Preload — демон, собирающий информацию о часто используемых программах и библиотеках и кэширующий их в памяти для быстрого запуска. Соответственно нерационально использовать его, если у вас мало оперативной памяти. Настройки находятся в файле /etc/preload.conf. Стандартные значения скорее всего вам подойдут, однако я приведу описание основных опций:

В файле /var/lib/preload/preload.state можно увидеть информацию о работе preload.

Тестирование

preload linux что это. Смотреть фото preload linux что это. Смотреть картинку preload linux что это. Картинка про preload linux что это. Фото preload linux что этоpreload linux что это. Смотреть фото preload linux что это. Смотреть картинку preload linux что это. Картинка про preload linux что это. Фото preload linux что это

Следует заметить, что на десктопе выигрыш в производительности будет существенно больше, за счет «тяжелых» DE, имеющих большое количество связанных библиотек.

Источник

Ускорение запуска программ с помощью Preload

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

Инсталяция

Настройка

Конфигурация программы храниться в файле /etc/preload.conf, стандартные значения должны подойти большинству пользователей. Но если вы хотите настроить все по своему, милости просим. Ниже описаны самые основные настройки, подробности, как всегда в документации или в статье, написанной разработчиком Preload.

Опция / Значение по умолчанию / Описание
model.cycle / 20 [секунд] / Как часто Preload будет опрашивать систему на предмет используемых программ и библиотек.

model.halflife / 168 [часов] / Как часто Preload будет забывать старую, накопившуюся информацию. Каждый раз, накопленная статистика будет терять 50% своего значения.

model.minsize / 2000000 [байт] / Нечто вроде ограничения на размер программы или библиотеки, на которую будет Preload обращать внимание. Если вы хотите, чтобы кешились мелкие программки — уменьшите значение, только для крупных, соответственно увеличьте это значение.

Использование памяти, считается по формуле:

(Всего RAM x model.memtotal) + (RAM доступная при старте x model.memfree) + (Кеш x model.memcached)

model.memtotal / -10%
model.memfree / 100%
model.memcached / 30%

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

Статистика

Но вам совершенно не обязательно обращать внимание на все эти файлы, позитивные результаты будут и без этого.

А теперь цифры

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *