Prelink і preload для прискорення запуску програм в linux

У цій замітці я опишу дві утиліти, які допоможуть прискорити роботу системи Linux, а конкретно - запуск додатків: prelink і preload. Prelink оптимізує виконувані файли для швидкого зв'язування з бібліотеками. Preload кешируєт часто використовувані бібліотеки і програми.
Подробиці під катом.


Preload - демон, який збирає інформацію про часто використовуваних програмах і бібліотеках і кешуючий їх в пам'яті для швидкого запуску. Відповідно нераціонально використовувати його, якщо у вас мало оперативної пам'яті. Налаштування знаходяться в файлі /etc/preload.conf. Стандартні значення швидше за все вам підійдуть, проте я приведу опис основних опцій:
model.cycle - як часто preload буде отримувати від системи дані про використовувані програм і бібліотек.
model.halflife - як часто preload буде скидати стару інформацію.
model.minsize - обмеження на розмір програми або бібліотеки, яку preload буде обробляти.
У файлі /var/lib/preload/preload.state можна побачити інформацію про роботу preload.

тестування


За допомогою утиліти time робилися п'ять вимірів виконання команди «php -v» з інтервалом в пару секунд. Спочатку п'ять вимірів без оптимізацій, потім була запущена утиліта prelink, проведені п'ять вимірів. Нарешті, був запущений демон preload, після появи php в кеші preload були знову проведені п'ять вимірів. Результати відображені на графіку (цифри - мілісекунди):

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

Тестування в статті - чиста і нахабна спекуляція.

Стверджую це, як людина, яка присвятила рік життя проблемі часу стартапу додатків (рішення цієї проблеми в деякому окремому випадку було темою мого диплома) і зламав чимало списів тільки на тестуванні часу старту.

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

Крім того, трохи спотворена інформація про Preload.
Він не просто бездумно кешує часто-використовувані файли і бібліотеки.
Він вивчає послідовності завантажуваних додатків і бібліотек, щоб наступного разу, коли ви запускаєте програму А, він здогадався відразу завантажити бібліотеки В і С, які зазвичай вантажаться одразу після А.

Тому, більш показовим був би приклад з повним завантаженням системи (я, наприклад, після використання Preload тому, що помітна візуальне прискорення в старті KDE).

Схожі статті