Эта статья рассказывает об оптимизаторе загрузки системы e4rat.
Внимание: статья предназначена только для разделов системы отформатированных в ext4. Возможно будет работать на других файловых системах если не использовать e4rat-realloc. Это предположение нуждается в проверке.
e4rat («Ext4 — Reducing Access Times») перемещает файлы, задействованные во время инициализации системы, в одну область диска, оптимизируя работу механизма упреждающего чтения файловой системы Ext4. Он состоит из трех компонентов:
e4rat-collect запускается во время «обучающей» загрузки ОС и составляет список нужных для инициализации ОС файлов.
e4rat-realloc перераспределяет блоки файлов, попавших в список так, чтобы они располагались в одной области жесткого диска.
e4rat-preload заранее помещает файлы в память для ускорения загрузки (это аналог ureadahead, он также способствует ускорению загрузки, но совсем не обязателен для применения
Для работы эти компоненты требуют, чтобы ОС была установлена на файловую систему Ext4, так как только она поддерживает онлайн-дефрагментацию (начиная с ядра версии 2.6.31). При этом вариант с конвертированной Ext3 не пройдет, ФС должна быть создана, что называется, с нуля.
Пакет e4rat можно собрать из исходников или установить штатный пакетным менеджером. Заметьте, что e4rat конфликтует с ureadahead.
e4rat-collect
Для сбора информации нужно добавить строку real_init=/sbin/e4rat-collect в параметры загрузки ядра в /boot/grub/grub.cfg. e4rat-collect будет собирать статистику ровно 2 минуты, все файлы, которые будут загружены за это время, попадут в список /var/lib/e4rat/startup.log, который будет использован для переразмещения этих файлов в одну область диска. Время сбора статистики можно изменить в файле /etc/e4rat.conf.
Теперь нужно перезагрузиться, чтобы e4rat мог собрать статистику. Завершить сбор статистики можно командой
e4rat-collect -k
или
pkill e4rat-collect
После окончания работы e4rat-collect собранные данные можно посмотреть в файле /var/lib/e4rat/startup.log и в случае необходимости вручную подкорректировать его. real_init=/sbin/e4rat-collect из параметров загрузки ядра можно убрать.
e4rat-realloc
Далее необходимо перейти в runlevel 1, чтобы запустить e4rat-realloc:
init 1
Авторизуемся и вводим команду:
e4rat-realloc /var/lib/e4rat/startup.log
Теперь начнется перемещение блоков файлов из сформированного в прошлом шаге списка.
Оно может продолжаться достаточно долго, поэтому терпеливо ждем и ни в коем случае не прерываем этот процесс (иначе потеряем файлы).
e4rat-preload
В параметры загрузки ядра нужно добавить real_init=/sbin/e4rat-preload. Данная функция схожа с readahead.
Чтобы после установки нового ядра не слетала строка инициализации е4rat-preload добавьте ее в /etc/default/grub в переменную GRUB_CMDLINE_LINUX.
После проведенной оптимизации старт моей системы уменьшился с 50сек до 35 сек. Внизу прикреплены графики старта системы без е4rat и с ним.
Долгий старт моей системы обьясняется эфективной работой другого пакета оптимизации под названием preload который занимается ускорением старта программ уже в процессе работы в системе а также большим количеством программ в автозагрузке у меня (анализ startup.log показал что система загружает ~4000 файлов).
Подробней о результатах тестов с preload вы можете почитать здесь
http://habrahabr.ru/post/20901/
Спс за внимание!