E4rat (Русский)
Уменьшение времени загрузки системы и входа в X-ы для файловой системы ext4 с использованием утиллит e4rat.
e4rat - проект Andreas Rid и Gundolf Kiefer, расшифровывается как e4 'reduced access time' (сокращение времени доступа), применяется только в файловой системе ext4. В набор утилит e4rat входит: e4rat-collect, e4rat-realloc и e4rat-preload.
Описание
Если взглянуть на статистику bootchart, то можно заметить, что при загрузке системы ни жесткий диск, ни CPU не используются полностью. e4rat позволяет максимально задействовать жесткий диск и CPU, ускоряя таким образом процесс загрузки. Все проводится в три этапа:
- e4rat-collect - собирает статистику по используемым файлам в течении определенного времени (по умолчанию 120 секунд, но может быть скорректировано)
- e4rat-realloc - перераспределяет файлы из списка (помещает их в одну область диска)
- e4rat-preload - заранее загружает нужные файлы в память
Кому это нужно, а кому нет
e4rat может быть полезной в системах с одним пользователем, использующим автозапуск Х-в, при этом также можно ускорить запуск нужных программ. На серверах или при загрузке в CLI - время загрузки системы может снизиться не на много. Для SSD-дисков вообще нет смысла использовать, поскольку у них отсутствуют движущиеся части и, как следствие, отсутствуют (почти) задержки, однако, пользователям таких дисков, может быть полезно ознакомиться с Ureadahead.
Перед использованием e4rat рекомендуется сделать резервные копии изменяемых во избежание потери важных данных.
Установка
Пакет e4ratAUR можно найти в репозитории [community] и установить так:
# pacman -S e4rat
Использование
Далее более подробно:
e4rat-collect
Чтоб e4rat смог создать список файлов, необходимо отредактировать файл /boot/grub/menu.lst
(GRUB legacy) или /boot/grub/grub.cfg
(grub2), добавив в строку загрузки ядра linux следующее:
init=/sbin/e4rat-collect
Данное действие нужно будет выполнить один раз, поэтому также можно просто отредактировать нужную строку в меню grub на этапе загрузки из командной строки.
После загрузки, в течении 120 секунд, e4rat-collect будет собирать нужную информацию. Поэтому, в течении 2-х минут после загрузки, запустите X-ы, откройте любимый браузер или почтовую программу и т.д., при этом утилита зарегистрирует все запущенные программы и используемые файлы. При необходимости можно изменить стандартное время сбора статистики, для этого отредактируйте файл /etc/e4rat.conf
. Чтобы вручную завершить работу e4rat-collect, выполните:
e4rat-collect -k
или
pkill e4rat-collect
После загрузки и успешного завершения работы e4rat-collect должен появиться файл: /var/lib/e4rat/startup.log
Теперь не забудьте удалить команду запуска e4rat-collect из своего файла menu.lst
или grub.cfg
(не обязательно, если вы ее добавляли из командной строки GRUB в процессе загрузки системы).
e4rat-realloc
Для запуска процесса перемещения файлов, согласно созданному в предыдущем шаге списку, необходимо перейти в init 1:
sudo init 1
Авторизоваться в качестве root и выполнить:
e4rat-realloc /var/lib/e4rat/startup.log
В зависимости от того, сколько файлов перечислено в startup.log
, процесс может затянуться на продолжительное время.
e4rat-preload
Отредактируйте файл /boot/grub/menu.lst
(GRUB legacy) или /boot/grub/grub.cfg
(grub2), добавив в параметры загрузки ядра:
init=/sbin/e4rat-preload
GRUB_CMDLINE_LINUX="..."
файла /etc/default/grub
.Перезагружайтесь и наслаждайтесь.
e4rat и различные системы инициализации
По умолчанию e4rat-collect после завершения будет заменена на /sbin/init. Если вам нужно указать другой PID 1, например /bin/systemd, отредактируйте файл /etc/e4rat.conf
, раскомментировав в нем строку с нужным параметром init
Bootchart
Запустите Bootchart до и после использования e4rat, а затем сравните полученные результаты. Должны появиться видимые изменения.
bootchart 0.9-9
В этой версии журнал ведется только до запуска экранного менеджера. Для обхода данного ограничения можно попробовать выполнить следующее (работает не у всех):
В файле /etc/bootchartd.conf
установите:
AUTO_STOP_LOGGER="no"
Когда будет нужно остановить работу сервиса - выполните:
~# bootchartd stop
Для запуска e4rat-preload и bootchart добавив в параметры загрузки ядра:
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload
bootchart2
Для совместного использования bootchart2 с e4rat отредактируйте /sbin/bootchartd
и заменить строку init="/sbin/init"
на init="/sbin/e4rat-preload"
.
/etc/bootchartd.conf
от bootchart2 устроен иначе, а строка
EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"
может быть скорректирована таким образом, что можно будет либо завершать программу вручную (если оставить строку пустой), либо, при запуске указанной в строке программы, bootchart2 будет остановлен автоматически.
Устранение неполадок
Если что-то не работает - можно попробовать следующее.
startup.log не создается
- отключите все проверки в
rc.conf
- изучите все сообщения из
# dmesg | grep e4rat
- в
e4rat.conf
увеличите значения verbose и loglevel до 31.
e4rat - отчеты об ошибках в файловой системе ext2
- в файле
grub.cfg
илиmenu.lst
добавьте в параметры загрузки ядра:
rootfstype=ext4
/var/lib/e4rat/startup.log не доступен
- это говорит о том, что /var расположен на отдельном разделе и при загрузке еще не был смонтирован. Вам нужно переместить
startup.log
на раздел который доступен (лучше всего в /etc/e4rat/) и, для сохранения изменений, перенастроить/etc/e4rat.conf
:
startup_log_file /etc/e4rat/startup.log