E4rat (Русский)

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

Примечание: (для пользователей ureadahead) В официальном руководстве e4rat говорится о том, что ureadahead конфликтует с e4rat. Это может быть верным для Ubuntu, но в Arch Linux эти пакеты возможно будут работать нормально, хотя процесс загрузки, скорее всего, и не ускорится.

Перед использованием 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.

Примечание: Возможно, перед выходом или перезагрузкой стоит повторить перемещение несколько раз, чтобы уменьшить фрагментацию. Просто запустите эту команду ещё — число фрагментов может уменьшиться. Это абсолютно безопасно и не приводит ни к каким проблемам при загрузке.
Примечание: При использовании 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

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