E4rat (Русский)
e4rat - проект Andreas Rid и Gundolf Kiefer, расшифровывается как e4 'reduced access time' (сокращение времени доступа), применяется только в файловой системе ext4. В набор утилит e4rat входит: e4rat-collect, e4rat-realloc и e4rat-preload.
Есть альтернативная реализация e4rat-lite, которая выглядит более живой и оптимизированный. Смотрите раздел #e4rat-lite.
Описание
Если взглянуть на статистику bootchart, то можно заметить, что при загрузке системы ни жесткий диск, ни CPU не используются полностью. e4rat позволяет максимально задействовать жесткий диск и CPU, ускоряя таким образом процесс загрузки. Все проводится в три этапа:
- e4rat-collect - собирает статистику по используемым файлам в течении определенного времени (по умолчанию 120 секунд, но может быть скорректировано)
- e4rat-realloc - перераспределяет файлы из списка (помещает их в одну область диска)
- e4rat-preload - заранее загружает нужные файлы в память (используя несколько ядер CPU) для быстрой загрузки системы и приложений
Кому это нужно, а кому нет
e4rat может быть полезной в системах с одним пользователем, использующим автозапуск Х-в, при этом также можно ускорить запуск нужных программ. На серверах или при загрузке в CLI - время загрузки системы может снизиться не на много. Для SSD-дисков вообще нет смысла использовать, поскольку у них отсутствуют движущиеся части и, как следствие, отсутствуют (почти) задержки, однако, пользователям таких дисков, может быть полезно ознакомиться с Ureadahead.
Перед использованием e4rat рекомендуется сделать резервные копии изменяемых во избежание потери важных данных.
Установка
Установите пакет e4ratAUR.
- Чтобы собрать его, нужно сперва пересобрать audit из ABS с включенной опцией
staticlibs
. Простая установка стандартного пакета audit приведёт к ошибке сборки. - Audit нуждается в опциях ядра CONFIG_AUDIT и CONFIG_AUDITSYSCALL, смотрите Kernel (Русский)/Arch Build System (Русский). Возможно, понадобится добавить
audit=1
к параметрам ядра.
- По состоянию на 2020 год e4ratAUR не обновлялся несколько лет (последнее обновление: 2019-04-01) и не компилируется. Альтернатива e4rat-lite-gitAUR содержит патч, но он не портирован на оригинальный e4ratAUR. Подробности есть в комментариях на AUR и в разделе #e4rat-lite этой статьи.
- #e4rat-lite не требует пересборки audit, он нормально работает с версией из официальных репозиториев.
Использование
Далее более подробно:
e4rat-collect
Чтоб e4rat смог создать список файлов, необходимо добавить init=/sbin/e4rat-collect
к параметрам ядра. Например:
kernel /vmlinuz-linux root=/dev/disk/by-label/ARCH init=/sbin/e4rat-collect ro 5
Данное действие нужно будет выполнить один раз, поэтому также можно просто отредактировать нужную строку в меню 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 из настроек своего загрузчика (не обязательно, если вы ее добавляли из командной строки GRUB в процессе загрузки системы).
e4rat-realloc
Для запуска процесса перемещения файлов, согласно созданному в предыдущем шаге списку, авторизуйтесь как root и выполните:
e4rat-realloc /var/lib/e4rat/startup.log
В зависимости от того, сколько файлов перечислено в startup.log
, процесс может затянуться на продолжительное время.
Переход в однопользовательский режим с помощью systemctl isolate rescue
(systemd (Русский)#Соответствие уровней SysV целям systemd) позволит переместить блоки, которые не получилось бы переместить в multiuser.target.
sudo init 1
перед запуском e4rat-realloc
e4rat-preload
Добавьте init=/sbin/e4rat-preload
к параметрам ядра навсегда.
Перезагружайтесь и наслаждайтесь.
e4rat и различные системы инициализации
По умолчанию e4rat-collect после завершения будет заменена на /sbin/init. Если вам нужно указать другой PID 1, например /usr/bin/busybox
, отредактируйте файл /etc/e4rat.conf
, раскомментировав в нем строку с нужным параметром init:
init /usr/bin/busybox
Это позволяет запустить e4rat-preload
и bootchart
в одной и той же загрузке.
e4rat-lite
Альтернатива e4rat с некоторыми улучшениями. Также ожидается, что он позволит обойти некоторые проблемы, которые могут возникнуть при использовании оригинального пакета e4rat. Устанавливается с помощью пакета e4rat-lite-gitAUR.
Использование e4rat-lite
Команды e4rat-lite работают почти идентично e4rat. Смотрите README проекта. В целом:
collect: init=/usr/bin/e4rat-lite-collect
- стандартный лимит также 120 секунд, вы можете остановить процесс сборки с помощью:
# e4rat-lite-collect -k
realloc: /usr/bin/e4rat-lite-realloc
- рекомендуется переключение в runlevel 1, в systemd заранее выполните это:
# systemctl isolate rescue.target
preload: init=/usr/bin/e4rat-lite-preload
startup.log: /var/lib/e4rat-lite/startup.log
файл настроек: /etc/e4rat-lite.conf
- для systemd измените опцию init_file на:
init_file=/usr/lib/systemd/systemd
Bootchart
Bootchart можно использовать для построения графика запуска системы, что удобно для оценки использования процессора и диска. С помощью Bootchart можно сравнить процесс загрузки до и после e4rat.
bootchart
В этой версии журнал ведется только до запуска экранного менеджера. Для обхода данного ограничения можно попробовать выполнить следующее (работает не у всех):
В файле /etc/bootchartd.conf
установите:
AUTO_STOP_LOGGER="no"
Когда будет нужно остановить работу сервиса - выполните:
# bootchartd stop
Для запуска e4rat-preload и bootchart добавив в параметры загрузки ядра:
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload
bootchart2
Для совместного использования bootchart2AUR с 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 будет остановлен автоматически.
Для генерации графика используйте команду pybootchartgui -i
Устранение неполадок
Если что-то не работает - можно попробовать следующее.
startup.log не создается
- отключите службу auditd
- изучите все сообщения из
# dmesg | grep e4rat
- в
e4rat.conf
увеличите значения verbose и loglevel до 31. - попробуйте e4rat-lite вместо e4rat
e4rat ошибочно сообщает о файловой системе ext2
Добавьте rootfstype=ext4
к параметрам ядра.
/var/lib/e4rat/startup.log не доступен
- это говорит о том, что /var расположен на отдельном разделе и при загрузке еще не был смонтирован. Вам нужно переместить
startup.log
на раздел который доступен (лучше всего в /etc/e4rat/) и, для сохранения изменений, перенастроить/etc/e4rat.conf
:
startup_log_file /etc/e4rat/startup.log
Удалить раздражающее сообщение, которое мешает сообщениям загрузки
Если вас раздражает сообщение e4rat-preload во время загрузки, уменьшите verbose до 1 в файле /etc/e4rat.conf