E4rat (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

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

jlindgren в качестве альтернативы разработал бинарный preload, позволяющий сэкономить несколько секунд при загрузке.

Экономия достигается за счет:

  • использования чистого C без каких-либо зависимостей от внешних библиотек, что позволяет уменьшить количество связанных файлов .so с 22 до 3
  • предварительной загрузки первых 100 файлов (таких как дескрипторы и файлы содержимого) перед запуском /sbin/init, и дальнейшей загрузки остальных файлов как параллельно, так и в определенной последовательности

e4rat-preload-liteAUR[ссылка недействительна: сохранено в aur-mirror] можно установить из AUR.

Отредактируйте файл /boot/grub/menu.lst (GRUB legacy) или /boot/grub/grub.cfg (GRUB), добавив в параметры загрузки ядра:

init=/usr/sbin/e4rat-preload-lite

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

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