E4rat (Русский)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Уменьшение времени загрузки системы и входа в 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.

Примечание: Пользователи ureadahead, в официальном руководстве e4rat[устаревшая ссылка 2020-08-02] говориться о том, что ureadahead конфликтует с e4rat. Это может быть верным для Ubuntu, но в Arch Linux эти пакеты возможно будут работать нормально, хотя процесс загрузки, скорее всего, и не ускорится.

Перед использованием 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
Примечание: В случае использования grub2, параметры загрузки ядра добавляйте в строку GRUB_CMDLINE_LINUX="..." файла /etc/default/grub.

Перезагружайтесь и наслаждайтесь.

Примечание: После обновления системы может понадобиться выполнить заново все описанные для #e4rat-collect, #e4rat-realloc и #e4rat-preload действия

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