E4rat

Aus wiki.archlinux.de
Version vom 28. August 2011, 22:59 Uhr von Labello (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Category:Boot process (English) <!-- {{i18n|e4rat}} --> {{Article summary start}} {{Article summary text|How to drastically reduce boot and log-into-X time fo…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vorlage:Article summary start Vorlage:Article summary text Vorlage:Article summary heading Vorlage:Article summary wiki Vorlage:Article summary wiki Vorlage:Article summary wiki Vorlage:Article summary wiki Vorlage:Article summary heading Vorlage:Article summary link Vorlage:Article summary link Vorlage:Article summary end

e4rat stands for e4 'reduced access time' and is a project by Andreas Rid and Gundolf Kiefer. The the e4rat range of tools are comprised of e4rat-collect, e4rat-realloc and e4rat-preload.

Current version is 0.2.1

Process

If you look at a classical bootchart you will notice that neither disk nor CPU are utilized fully during the boot process. e4rat changes this to make full use of both disk and CPU during boot process and thus reduce boot time drastically. It consists of three stages:

  • e4rat-collect - collect files for a specified time (default 120 seconds but this can be adjusted)
  • e4rat-realloc - reallocate files
  • e4rat-preload - preload them

Who benefits, who doesn't

e4rat has proven to be extremely effective for typical single user set-ups which boot straight into X, perhaps even with a number of programs open. If you have a server set-up and boot only into the CLI your boot time decrease may not be as drastic. SSD drives do not benefit because there are no moving parts and thus (almost) no disk latency.

The following might have been valid for version 0.20. We are now at version 0.21 - please report findings for the latest version.

Caveat emptor: the current version of e4rat (0.20) will severely damage any partition that has been converted to ext4. This is likely because existing files are not converted to use extents, and e4rat has no built-in mechanism to detect this condition. Before using e4rat you should backup the affected partitions, reformat them as ext4 and then restore the backups. Given the current status and the nature of the program, it's a smart move to backup the system before attempting reallocation anyway.

Installation

e4rat is available in the AUR: Vorlage:Package AUR

Getting it to work

Now for the nitty-gritty:

e4rat-collect

To have e4rat collect a list of files you will need to append the following to your kernel line in your /boot/grub/menu.lst (grub legacy) or /boot/grub/grub.cfg (grub2) file:

init=/sbin/e4rat-collect

This will only have to be done once so you may prefer to append this command on the grub command line itself.

Upon booting e4rat-collect will watch your system for a default of 120 seconds. So if you boot, log into X, open your favourite browser and email client all within 2 minutes, every one of those activities is logged. To change the default of 120 seconds edit /etc/e4rat.conf. To manually stop e4rat-collect type:

e4rat-collect -k

or

pkill e4rat-collect

Upon successful boot and after having waited the allotted time you should see the following file: /var/lib/e4rat/startup.log

Do not forget to remove the e4rat-collect command from your menu.lst or grub.cfg file (not necessary if you inserted it on the grub command line).

e4rat-realloc

For the reallocation process change to init 1

sudo init 1

Log in as root and run:

e4rat-realloc  /var/lib/e4rat/startup.log

This can take a while depending on how many files you have your startup.log file.

e4rat-preload

Append the following permanently to your kernel line in your /boot/grub/menu.lst (grub legacy) or /boot/grub/grub.cfg (grub2) file:

init=/sbin/e4rat-preload

Reboot and enjoy.

e4rat with different init system

e4rat-collect defaults to replacing itself with /sbin/init upon completion. If you need to specify another PID 1, such as /bin/systemd, you can change this in /etc/e4rat.conf by setting the init parameter and uncommenting the line.

Bootchart

Note: this hasn't worked for and is still in development - any suggestions welcome

You will see a noticeable improvement but nothing can beat a nice Bootchart. Have it run before and after e4rat installation and gawk at the difference.

bootchart 0.9-9

This version automatically stops logging as soon as ?dm comes up. Supposedly the following overrides that and continues logging but it doesn't work for me:

To continue logging adjust your /etc/bootchartd.conf as follows:

AUTO_STOP_LOGGER="no"

To stop it manually type:

~# bootchartd stop

To run both e4rat-preload and bootchart append the following to your grub kernel line:

init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload

bootchart2

The /etc/bootchartd.conf of bootchart2 is set up differently and the line

EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"

can be adjusted or left empty for logging to be stopped manually.

While the above works, I have not managed to get bootchart2 to play along with e4rat-preload on the kernel line.

Tips and Tricks

If things don't work you may want to try the following.

startup.log is not created

  • comment out auditd from your rc.conf
  • check the following for any hints
dmesg | grep e4rat
  • try to increase verbosity and loglevel to 31 in your e4rat.conf

e4rat erroneously reports an ext2 files system

  • add the following to the kernel line in your grub.cfg or menu.lst
rootfstype=ext4