E4rat: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
 
(15 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{SEITENTITEL:e4rat}}
e4rat steht für e4 "reduced access time" und ist ein Projekt von Andreas Rid und Gundolf Kiefer. Die Software setzt sich aus drei Teilen zusammen: e4rat-collect, e4rat-realloc und e4rat-preload.
e4rat steht für e4 "reduced access time" und ist ein Projekt von Andreas Rid und Gundolf Kiefer. Die Software setzt sich aus drei Teilen zusammen: e4rat-collect, e4rat-realloc und e4rat-preload.


Derzeit ist die Version 0.2.1 aktuell.
Wie aus dem Namen schon hervorgeht, funktioniert diese Software nur mit dem ext4-Dateisystem!


==Arbeitsweise==
==Arbeitsweise==
Betrachtet man einen gewöhnlichen Bootvorgang, dann stellt man fest, dass weder der Prozessor noch die Festplatte währendessen vollkommen ausgelastet sind. e4rat sorgt für eine hohe Auslastung der Festplatte und der CPU während des Systemstarts und reduziert somit die Startzeit immens. Dabei müssen drei Schritte durchlaufen werden:
Betrachtet man einen gewöhnlichen Bootvorgang, dann stellt man fest, dass weder der Prozessor noch die Festplatte währenddessen vollkommen ausgelastet sind. e4rat sorgt für eine hohe Auslastung der Festplatte und der CPU während des Systemstarts und reduziert somit die Startzeit immens. Dabei müssen drei Schritte durchlaufen werden:
* '''e4rat-collect''' - Erstellt eine Liste der beim Start benötigten Dateien in einem festgelegtem Zeitraum (Standartwert sind 120 Sekunden. Dieser kann aber angepasst werden)
* '''e4rat-collect''' - Erstellt eine Liste der beim Start benötigten Dateien in einem festgelegtem Zeitraum (Standardwert sind 120 Sekunden. Dieser kann aber angepasst werden)
* '''e4rat-realloc''' - Umsortieren der gelisteten Daten direkt auf dem Datenträger
* '''e4rat-realloc''' - Umsortieren der gelisteten Daten direkt auf dem Datenträger
* '''e4rat-preload''' - Vorheriges Laden der Dateien
* '''e4rat-preload''' - Vorheriges Laden der Dateien


===Wem es etwas nützt, und wem nicht===
==Wem es etwas nützt, und wem nicht==
Beim booten in den X-Server auf typischen Einzeluser-Systemen hat sich e4rat schon oft als sehr effizient erwiesen. Handelt es sich jedoch beim Rechner um einen Server, welcher nur in die Kommandozeile bootet, wird sich der Speedgewinn sehr in Grenzen halten. Weiterhin profitieren auch SSDs nicht sehr stark vom Umsortieren der Daten, da die Latenzen bei SSDs in der Regel unabhängig von der Position der Dateien auf dem Datenträger sind.
Beim booten in den X-Server auf typischen Einzeluser-Systemen hat sich e4rat schon oft als sehr effizient erwiesen. Handelt es sich jedoch beim Rechner um einen Server, welcher nur in die Kommandozeile bootet, wird sich der Speedgewinn sehr in Grenzen halten. Weiterhin profitieren auch SSDs nicht sehr stark vom Umsortieren der Daten, da die Latenzen bei SSDs in der Regel unabhängig von der Position der Dateien auf dem Datenträger sind.


'''Achtung: Die Version 0.20 zerstörte noch komplette Dateisysteme, welche zu ext4-Systemen umgewandelt worden waren. Es wird generell geraten vor Installation und Verwendung der Tools ein Backup der auf der Partition befindlichen Dateien zu erstellen!'''
'''Achtung: Die Version 0.20 zerstörte noch komplette Dateisysteme, welche zu ext4-Systemen umgewandelt worden waren. Es wird generell geraten vor Installation und Verwendung der Tools ein Backup der auf der Partition befindlichen Dateien zu erstellen!'''


===Who benefits, who doesn't===
{{Installation|repo=aur|paket=e4rat}}


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.
==Verwendung==
===e4rat-collect===
Um e4rat-collect dazu zu bewegen, die Liste der beim Boot benötigten Dateien zu erstellen, ist es notwendig in der 'Kernel'-Zeile der Bootloader-Konfiguration ('''/boot/grub/menu.lst''' (grub legacy) oder '''/boot/grub/grub.cfg''' (grub2)) folgendes hinzuzufügen:


The following might have been valid for version 0.20. We are now at version 0.21 - please report findings for the latest version.
<pre>init=/usr/bin/e4rat-collect</pre>


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.
Dies muss nur ein einziges Mal getan werden, weshalb die Zeile nach dem ersten Boot wieder von der Eingabe bereinigt werden sollte.


==Installation==
Da e4rat-collect die ersten 120 Sekunden des Bootvorgangs überwacht (dies kann in '''/etc/e4rat.conf''' geändert werden), ist es weiterhin ratsam, sich einzuloggen und danach alle oft verwendeten Programm zu starten. Denn deren benötigten Dateien werden auch gecached werden. Dies führt dazu, dass der Systemstart nicht nur schneller von statten geht, sondern auch dass oft verwendete Programme so gut wie augenblicklich gestartet werden können.
e4rat is available in the [[AUR]]: {{Package AUR|e4rat}}


==Getting it to work==
Um e4rat-collect manuell zu deaktivieren benutzt man entweder:
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:


<pre>init=/sbin/e4rat-collect</pre>
<pre>e4rat-collect -k</pre>


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


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:
<pre>pkill e4rat-collect</pre>


<pre>e4rat-collect -k</pre>or<pre>pkill e4rat-collect</pre>
Nach einem erfolgreichen Start und nachdem die eingestellte Wartezeit verstrichen ist, sollte folgende Datei existieren:
'''/var/lib/e4rat/startup.log'''


Upon successful boot and after having waited the allotted time you should see the following file: '''/var/lib/e4rat/startup.log'''
Man sollte daran denken den Eintrag in die Konfigurationsdatei des Bootloaders wieder zu entfernen, sofern man den Befehl für die Analyse der beim Start benötigten Dateien nicht während des Bootvorgangs im Bootloader lediglich temporär hinzugefügt hat.
 
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===
===e4rat-realloc===
For the reallocation process change to init 1
Für die Umsortierung der Dateien, sollte man ins multi-user.target wechseln:
<pre>sudo init 1</pre>
<pre>sudo systemctl isolate multi-user.target</pre>
Log in as root and run:
Als root eingeloggt:
<pre>e4rat-realloc  /var/lib/e4rat/startup.log</pre>
<pre>e4rat-realloc  /var/lib/e4rat/startup.log</pre>
This can take a while depending on how many files you have your startup.log file.
Je nachdem wie viele Dateien in startup.log aufgelistet sind, kann dieser Prozess einige Zeit in Anspruch nehmen.
Und man kann auch davon ausgehen, dass einmal e4rat-realloc laufen lassen nicht genügt. Man kann sich da ein Script bauen, das einem das erneut aufrufen von e4rat-ralloc übernimmt
<pre>
for i in {1..50}
    do
        /usr/bin/e4rat-realloc /var/lib/e4rat/startup.log
    done</pre>
...wenn man mag verschiebt man das Script nach:
<pre>/usr/local/bin</pre>
dann kann mans ganz einfach im multi-user.target aufrufen.
 
===e4rat-preload===
===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:
Um sich die vorgenommenen Anpassungen zunutze machen zu können, ist folgender Eintrag in die 'kernel'-Zeile der Konfigurationsdatei des Bootloaders ('''/boot/grub/menu.lst''' (grub legacy) oder '''/boot/grub/grub.cfg''' (grub2)) notwendig:


<pre>init=/sbin/e4rat-preload</pre>
<pre>init=/usr/bin/e4rat-preload</pre>


Reboot and enjoy.
Beim nächsten Start sollten sich die Geschwindigkeitsvorteile deutlich bemerkbar machen. Sollte sich beim Startvorgang etwas geändert haben, ist es ratsam die ersten beiden Schritte erneut durchzuführen, um die Veränderung auch in die Optimierung einfließen zu lassen.


==e4rat with different init system==
==e4rat mit anderem 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.
Standardmäßig ist e4rat-collect so eingestellt, dass es sich selbst mit /sbin/init nach erfolgreichem Ausführen ersetzt. Systemd benötigt jedoch PID 1, darum muß man den '''init'''-Parameter in /etc/e4rat.conf verändern, indem man die zugehörige Zeile ändert in:
<pre>/usr/lib/systemd/systemd</pre>


==Bootchart==
==Tips und Tricks==


<b>Note: this hasn't worked for and is still in development - any suggestions welcome</b>
Falls etwas nicht wie beschrieben funktionieren sollte, gibt es einige Möglichkeiten dies zu beheben:


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.
===startup.log wird nicht erstellt===


===bootchart 0.9-9===
*ist der kernel mit audit support kompiliert? wenn nicht, muß man sich selbst einen kernel mit audit support bauen:
<pre>
1) linux PKGBUILD runter laden


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:
2a) wenn man "nconfig" nutzt findet sich diese option in "general setup" => "auditing support"


To continue logging adjust your '''/etc/bootchartd.conf''' as follows:
2b) oder in der "config" datei "CONFIG_AUDIT=y" setzen und das führende # entfernen, makepkg -g >> PKGBUILD laufen lassen


<pre>AUTO_STOP_LOGGER="no"</pre>
3) kompilieren mit makepkg -rsi </pre>


To stop it manually type:
===e4rat beschwert sich fälschlicherweise über ein ext2-Dateisystem===
 
*man füge folgenden Eintrag zur 'kernel'-Zeile des Bootloaders hinzu:
<pre>~# bootchartd stop</pre>
rootfstype=ext4


To run both e4rat-preload and bootchart append the following to your grub kernel line:
[[en:e4rat]]
 
[[Kategorie:Dateisysteme]]
<pre>init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload</pre>
 
===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

Aktuelle Version vom 21. Juni 2017, 21:10 Uhr

e4rat steht für e4 "reduced access time" und ist ein Projekt von Andreas Rid und Gundolf Kiefer. Die Software setzt sich aus drei Teilen zusammen: e4rat-collect, e4rat-realloc und e4rat-preload.

Wie aus dem Namen schon hervorgeht, funktioniert diese Software nur mit dem ext4-Dateisystem!

Arbeitsweise

Betrachtet man einen gewöhnlichen Bootvorgang, dann stellt man fest, dass weder der Prozessor noch die Festplatte währenddessen vollkommen ausgelastet sind. e4rat sorgt für eine hohe Auslastung der Festplatte und der CPU während des Systemstarts und reduziert somit die Startzeit immens. Dabei müssen drei Schritte durchlaufen werden:

  • e4rat-collect - Erstellt eine Liste der beim Start benötigten Dateien in einem festgelegtem Zeitraum (Standardwert sind 120 Sekunden. Dieser kann aber angepasst werden)
  • e4rat-realloc - Umsortieren der gelisteten Daten direkt auf dem Datenträger
  • e4rat-preload - Vorheriges Laden der Dateien

Wem es etwas nützt, und wem nicht

Beim booten in den X-Server auf typischen Einzeluser-Systemen hat sich e4rat schon oft als sehr effizient erwiesen. Handelt es sich jedoch beim Rechner um einen Server, welcher nur in die Kommandozeile bootet, wird sich der Speedgewinn sehr in Grenzen halten. Weiterhin profitieren auch SSDs nicht sehr stark vom Umsortieren der Daten, da die Latenzen bei SSDs in der Regel unabhängig von der Position der Dateien auf dem Datenträger sind.

Achtung: Die Version 0.20 zerstörte noch komplette Dateisysteme, welche zu ext4-Systemen umgewandelt worden waren. Es wird generell geraten vor Installation und Verwendung der Tools ein Backup der auf der Partition befindlichen Dateien zu erstellen!

Installation

Das Programm ist als e4ratAUR im AUR verfügbar, und kann von dort zum Beispiel mit einem der AUR Hilfsprogramme installiert werden.

pakku -S e4rat

Bei der Verwendung von AUR-Hilfsprogrammen ist zu beachten, dass Pakete niemals „blind“ installiert werden sollten. Vor dem Installieren sollten die Kommentare im AUR gelesen, und das PKGBUILD geprüft werden.

Verwendung

e4rat-collect

Um e4rat-collect dazu zu bewegen, die Liste der beim Boot benötigten Dateien zu erstellen, ist es notwendig in der 'Kernel'-Zeile der Bootloader-Konfiguration (/boot/grub/menu.lst (grub legacy) oder /boot/grub/grub.cfg (grub2)) folgendes hinzuzufügen:

init=/usr/bin/e4rat-collect

Dies muss nur ein einziges Mal getan werden, weshalb die Zeile nach dem ersten Boot wieder von der Eingabe bereinigt werden sollte.

Da e4rat-collect die ersten 120 Sekunden des Bootvorgangs überwacht (dies kann in /etc/e4rat.conf geändert werden), ist es weiterhin ratsam, sich einzuloggen und danach alle oft verwendeten Programm zu starten. Denn deren benötigten Dateien werden auch gecached werden. Dies führt dazu, dass der Systemstart nicht nur schneller von statten geht, sondern auch dass oft verwendete Programme so gut wie augenblicklich gestartet werden können.

Um e4rat-collect manuell zu deaktivieren benutzt man entweder:

e4rat-collect -k

oder:

pkill e4rat-collect

Nach einem erfolgreichen Start und nachdem die eingestellte Wartezeit verstrichen ist, sollte folgende Datei existieren: /var/lib/e4rat/startup.log

Man sollte daran denken den Eintrag in die Konfigurationsdatei des Bootloaders wieder zu entfernen, sofern man den Befehl für die Analyse der beim Start benötigten Dateien nicht während des Bootvorgangs im Bootloader lediglich temporär hinzugefügt hat.

e4rat-realloc

Für die Umsortierung der Dateien, sollte man ins multi-user.target wechseln:

sudo systemctl isolate multi-user.target

Als root eingeloggt:

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

Je nachdem wie viele Dateien in startup.log aufgelistet sind, kann dieser Prozess einige Zeit in Anspruch nehmen. Und man kann auch davon ausgehen, dass einmal e4rat-realloc laufen lassen nicht genügt. Man kann sich da ein Script bauen, das einem das erneut aufrufen von e4rat-ralloc übernimmt

for i in {1..50}
    do
        /usr/bin/e4rat-realloc /var/lib/e4rat/startup.log
    done

...wenn man mag verschiebt man das Script nach:

/usr/local/bin

dann kann mans ganz einfach im multi-user.target aufrufen.

e4rat-preload

Um sich die vorgenommenen Anpassungen zunutze machen zu können, ist folgender Eintrag in die 'kernel'-Zeile der Konfigurationsdatei des Bootloaders (/boot/grub/menu.lst (grub legacy) oder /boot/grub/grub.cfg (grub2)) notwendig:

init=/usr/bin/e4rat-preload

Beim nächsten Start sollten sich die Geschwindigkeitsvorteile deutlich bemerkbar machen. Sollte sich beim Startvorgang etwas geändert haben, ist es ratsam die ersten beiden Schritte erneut durchzuführen, um die Veränderung auch in die Optimierung einfließen zu lassen.

e4rat mit anderem init-System

Standardmäßig ist e4rat-collect so eingestellt, dass es sich selbst mit /sbin/init nach erfolgreichem Ausführen ersetzt. Systemd benötigt jedoch PID 1, darum muß man den init-Parameter in /etc/e4rat.conf verändern, indem man die zugehörige Zeile ändert in:

/usr/lib/systemd/systemd

Tips und Tricks

Falls etwas nicht wie beschrieben funktionieren sollte, gibt es einige Möglichkeiten dies zu beheben:

startup.log wird nicht erstellt

  • ist der kernel mit audit support kompiliert? wenn nicht, muß man sich selbst einen kernel mit audit support bauen:
1) linux PKGBUILD runter laden

2a) wenn man "nconfig" nutzt findet sich diese option in "general setup" => "auditing support"

2b) oder in der "config" datei "CONFIG_AUDIT=y" setzen und das führende # entfernen, makepkg -g >> PKGBUILD laufen lassen

3) kompilieren mit makepkg -rsi 

e4rat beschwert sich fälschlicherweise über ein ext2-Dateisystem

  • man füge folgenden Eintrag zur 'kernel'-Zeile des Bootloaders hinzu:
rootfstype=ext4