E4rat (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи E4rat. Дата последней синхронизации: 14 октября 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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-дисков вообще нет смысла использовать, поскольку у них отсутствуют движущиеся части и, как следствие, отсутствуют (почти) задержки.

Перед использованием e4rat рекомендуется сделать резервные копии изменяемых во избежание потери важных данных.

Установка

Установите пакет e4ratAUR.

Примечание:
  • Чтобы собрать его, нужно сперва пересобрать audit из ABS с включенной опцией staticlibs. Простая установка стандартного пакета audit приведёт к ошибке сборки.
  • Audit нуждается в опциях ядра CONFIG_AUDIT и CONFIG_AUDITSYSCALL, смотрите Kernel (Русский)/Arch Build System (Русский). Возможно, понадобится добавить audit=1 к параметрам ядра.
Совет:
  • #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.

Примечание: Возможно, перед выходом или перезагрузкой стоит повторить перемещение несколько раз, чтобы уменьшить фрагментацию. Просто запустите эту команду ещё — число фрагментов может уменьшиться. Это абсолютно безопасно и не приводит ни к каким проблемам при загрузке.
Примечание: При использовании SysV-style систем инициализации нужно перейти в runlevel 1 с помощью команды sudo init 1 перед запуском e4rat-realloc

e4rat-preload

Добавьте init=/sbin/e4rat-preload к параметрам ядра навсегда.

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

Примечание: После обновления системы может понадобиться выполнить заново все описанные для #e4rat-collect, #e4rat-realloc и #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-gitAUR конфликтует с ureadahead, так что невозможно установить их одновременно — но это всё равно не принесло бы пользы. Смотрите также: #Кому это нужно, а кому нет.

Использование 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

Важно: Официальный пакет bootchart, по-видимому, устарел, в нём нет команды bootchart-render, необходимой для генерации графика. Рекомендуется использовать bootchart2 как альтернативу.

В этой версии журнал ведется только до запуска экранного менеджера. Для обхода данного ограничения можно попробовать выполнить следующее (работает не у всех):

В файле /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

Смотрите также