# Boot analysieren und optimieren.

## V10lator

Hi,

heute habe ich versucht gentoo schneller booten zu lassen. Dazu fing ich beim Kernel an. Nach vielen Optimierungen bootet er nun sogar einen Tick schneller (Ich konnte allein 3 Sekunden durch entfernen der Floppy Unterstützung gut machen), optimal ist es aber immer noch nicht.

Was mir besonders ins Auge sticht sind wieder 3 Sekunden:

```
...

[    3.107686] scsi 7:0:0:3: Direct-Access     Generic  USB MS Reader    1.03 PQ: 0 ANSI: 0

[    6.130981] scsi 0:0:0:0: Attached scsi generic sg0 type 3

...
```

Da die Zeit bis zur Übergabe an init bei ca. 7 Sekunden liegt (ich nehme als "init start" immer die Udev Startmeldung:

```
[    7.039033] udev: starting version 151

[    7.039115] udevd (4254): /proc/4254/oom_adj is deprecated, please use /proc/4254/oom_score_adj instead.
```

) wären diese 3 Sekunden fast die Hälfte!  :Shocked: 

dmesg nach dem boot: http://pastebin.com/NGR41W6F

Und bitte möge mir niemand sagen ich soll die bluetooth Module entfernen. der Stick ist nur Testweise nicht angesteckt (er war der erste Verdächtige für den 3 Sekunden Lock).

Achja, bevor ichs vergesse: bootchart will bei mir auch nicht wie es oll. Ich habe "init=/sbin/bootchartd" in der grub.cfg hinzugefügt (ja, ich weiß, das fehlt in der dmesg Ausgabe, die entstand noch bevor ich bootchart testen wollte) und meine init Datei des initramfs angepasst:

```
INIT=/sbin/init

CUSTOM_INIT=`cat /proc/cmdline | grep -o -e 'init\=[0-9a-zA-Z\/]* '`

if [ ! "$CUSTOM_INIT" = "" ]; then

   INIT=$CUSTOM_INIT

fi

exec switch_root /mnt/root $INIT $CMDLINE
```

(Komplett: http://pastebin.ca/2074534 )

Doch bootchartd beendet sich nie! Dadurch wird auch keine Grafik angelegt. "bootchartd stop" gibt zwar eine Ausgabe, diese sagt mir jedoch nicht viel und bringt auch nichts.

Ich kann das Bild zwar manuell rendern lassen, CPU, I/O, Disk throughput und Disk utilization bleiben jedoch leer und der Rest zeigt Sachen an die ich nicht wissen will (als Beispiel: Geschätzte 90% der Zeitanzeige zeigt mir Compiz. Das hilft mir natürlich nicht sonderlich...)

----------

## Randy Andy

Hi V10lator.

Auch wenn ich zu deinen Problemen keine konkreten Hilfen anbieten kann, so möchte ich aber der Vollständigkeit wegen doch noch weitere Optimierungsmöglichkeiten aufzählen, die bisher unerwähnt blieben.

Was ist mit der parallelen Initialisierungs-Option aus der rc.conf, daran gedacht? 

```

# Set to "YES" if you want the rc system to try and start services

# in parallel for a slight speed improvement. When running in parallel we

# prefix the service output with its name as the output will get

# jumbled up.

# WARNING: whilst we have improved parallel, it can still potentially lock

# the boot process. Don't file bugs about this unless you can supply

# patches that fix it without breaking other things!

rc_parallel="YES"
```

Appropos Kernel Optimierung:

Ich verwende keine initrd / initramfs, und habe den kernel auf meine Hardware hin minimalistisch konfiguriert, so startet er auch schneller als mit initrd.

Die Frage ist natürlich, kann oder möchte man auf bereitgestellten Funktionen von initramfs verzichten.

Ich brauche das jedenfalls nicht, und benötige auch keinen generischen kernel der auf anderen Maschienen läuft.

Gruß, Andy.

----------

## ChrisJumper

Etwas das mich verblüffte war die Boot-Geschwindigkeit nach einem Wechsel auf eine SSD. Dafür solltest du mal durch Forum schauen und darauf achten das auf dem Root/Boot-System keine log oder tmp Verzeichnis ist, weil dies die Lebenszeit der SSD negativ Beeinflussen. Aber dies brachte einen richtigen boost. Bei mir war es von ca. 30 Sekunden auf 11 Sekunden.

Bootchart hat nach einem Update angefangen Probleme zu machen. Es startete in 2 von 30 Fällen nicht mehr (so das das System den Bootvorgang nicht mehr vollzog!).

----------

## lukasletitburn

Wenn du ein schnelles und schlankes System willst dann fang beim Kernel an. Alles raus was du nicht brauchst nur noch die die Optionen sollten aktiv sein die du wirklich brauchst sonst nichts. Das ist der einzige Weg. Suche nicht im Bootloader gleich an den Kernel es ist extrem viel arbeitet aber dein Rechner wird nie schneller sein!

----------

## V10lator

 *Randy Andy wrote:*   

> Was ist mit der parallelen Initialisierungs-Option aus der rc.conf, daran gedacht?

 Ja.  :Wink: 

 *Quote:*   

> Die Frage ist natürlich, kann oder möchte man auf bereitgestellten Funktionen von initramfs verzichten.

 Kann ich leider nicht.

 *Quote:*   

> Ich brauche das jedenfalls nicht, und benötige auch keinen generischen kernel der auf anderen Maschienen läuft.

 Einen generischen Kernel brauche und benutze ich auch nicht. Wie bereits erwähnt wollte ich u.A. wissen wie ich die 3 Sekunden Bootverzögerung weg bekomme.

 *ChrisJumper wrote:*   

> Etwas das mich verblüffte war die Boot-Geschwindigkeit nach einem Wechsel auf eine SSD

 Ich nutze ebenso eine SSD.  :Wink: 

 *Quote:*   

> Bootchart hat nach einem Update angefangen Probleme zu machen. Es startete in 2 von 30 Fällen nicht mehr (so das das System den Bootvorgang nicht mehr vollzog!).

 :/

 *lukasletitburn wrote:*   

> Wenn du ein schnelles und schlankes System willst dann fang beim Kernel an. Alles raus was du nicht brauchst nur noch die die Optionen sollten aktiv sein die du wirklich brauchst sonst nichts.

 ...du hast meinen ersten Post aber schon gelesen, oder?

----------

## Knieper

https://forums.gentoo.org/viewtopic-t-708893.html

https://forums.gentoo.org/viewtopic-t-734054.html

----------

## V10lator

 *Knieper wrote:*   

> https://forums.gentoo.org/viewtopic-t-708893.html
> 
> https://forums.gentoo.org/viewtopic-t-734054.html

  *Quote:*   

> Bei den meisten Systemen dürfte Linux 2.6.28 aber trotz der integrierten Fastboot-Patches nur unwesentlich schneller starten

 (Quelle)

 *Quote:*   

>     0.000000] Linux version 3.0.0-rc1 (root@horst) (gcc version 4.6.0 (Gentoo 4.6.0 p1.2, pie-0.4.5) ) #8 SMP PREEMPT Sat Jun 4 11:33:42 CEST 2011

 Sprich: Die Patches sollten bereits in dem Kernel sein, die 3 Sekunden sind aber trotzdem da.

//EDIT: Ich habe mal folgendes versucht: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=aa5d9151f745b6ee6a236a1f109118034277eb92 jedoch sagt mir das Bild am Ende nicht viel:

[IMG]http://img29.imageshack.us/img29/5439/kerneltrace.png[/IMG]

dmesg: http://paste.pocoo.org/show/402033/

//EDIT²: Ich habe den Blocker identifiziert: Es ist SCSI_DC395x - nehme ich diesen aus dem Kernel beträgt die Bootzeit nurnoch ~2.7 Sekunden (wie vorher: bis udev)!

Als Workaround habe ich diesen Treiber mal als Modul gebaut: Er lädt direkt nach udev:

```
[    2.677140] udev: starting version 151

[    2.677216] udevd (4181): /proc/4181/oom_adj is deprecated, please use /proc/4181/oom_score_adj instead.

[    2.746742] dc395x: Tekram DC395(U/UW/F), DC315(U) - ASIC TRM-S1040 v2.05, 2004/03/08
```

braucht allerdings seine Zeit bis er den SCSI-Scanner eingebunden hat:

```
[    7.489600] scsi 7:0:0:0: Attached scsi generic sg6 type 3
```

Ob es während dieser Zeit noch zu Lookups kommt werden weitere Tests zeigen, jedenfalls bootet er nun deutlich schneller:

Letzte Zeile von dmesg direkt nach dem booten vorher:

```
[   17.071844] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
```

und nachher:

```
[    8.712755] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
```

allerdings habe ich zwischenzeitlich auch noch an anderen Kerneloptionen rumgeschraubt.  :Very Happy: 

----------

## Max Steel

Hast du schonmal den 2.6.39 versucht? Dadurch das in dem endgültig das BKL rausgeflogen könnte sich einiges schneller anfühlen/messbar schneller sein.

----------

## V10lator

```
[    0.000000] Linux version 3.0.0-rc1 (root@horst) (gcc version 4.6.0 (Gentoo 4.6.0 p1.2, pie-0.4.5) ) #15 SMP PREEMPT Tue Jun 7 15:58:33 CEST 2011
```

Ich bin mir ziemlich sicher das die den BKL nicht wieder rein genommen haben...  :Wink: 

----------

## Josef.95

Zu diesem Thema eventuell auch noch Interessant: 

```
    sys-apps/e4rat [1]

     Available versions:  (~)0.2.1

     Homepage:            http://e4rat.sourceforge.net/

     Description:         Toolset to accelerate the boot process and application startup

[[1] "sunrise" /var/lib/layman/sunrise
```

Hier gab es auch schon ein paar Tipps dazu.

----------

## musv

Hab mir mal den Fred zu e4rat durchgelesen. Klingt logisch, aber:

Funktioniert nur mit ext4. Ich hab z.B. Reiser4 noch im Einsatz und werd die Rootpartition vermutlich aber im August auf Btrfs umstellen.

Scheinbar darf man die e4rat-Datenumordnungsorgie für jedes Programm und den Systemstart nach jedem größeren Update erneut ausführen, da ja die Daten logischerweise nicht mehr an denselben Orten auf der Platte liegen werden.

Bei SSD-Platten dürfte der Effekt Null sein.

Mir wär das zuviel Aufwand.Last edited by musv on Thu Jun 09, 2011 5:17 am; edited 1 time in total

----------

## V10lator

 *musv wrote:*   

> Hab mir mal den Fred zu e4rat durchgelesen. Klingt logisch, aber:
> 
> Funktioniert nur mit ext4. Ich hab z.B. Reiser4 noch im Einsatz und werd die Bootpartition vermutlich aber im August auf Btrfs umstellen.

 Vorsicht, das ist immernoch unstable! Ich habe vor kurzem erst von btrfs auf ext4 gewechselt da ich mit btrfs + neueren Kernel nicht mehr booten konnte und wochenlang keine Antwort auf der Mailinglist bekam.  :Sad: 

 *Quote:*   

> Bei SSD-Platten dürfte der Effekt Null sein.

 Gleich 0 nicht, eher im Minusbereich da es der Lebenszeit schaden dürfte.  :Wink: 

----------

## musv

 *V10lator wrote:*   

> Vorsicht, das [BTRFS] ist immernoch unstable! Ich habe vor kurzem erst von btrfs auf ext4 gewechselt da ich mit btrfs + neueren Kernel nicht mehr booten konnte und wochenlang keine Antwort auf der Mailinglist bekam. 

 

Deswegen warte ich auch noch bis nach dem Urlaub. Ich denk mal, dass dann 2.6.40 aka 3.0 draußen ist. Soweit ich gehört hab, gab's wohl bei BTRFS in früheren 30-er Versionen noch einige größere Umstellungen, die nicht abwärtskompatibel waren. Ich hatte bisher als Root-Partition immer Reiser4. Nur gab's da in 2.6.38 einen bösen Bug, der gleich mal das ganze Dateisystem geschreddert hatte, als ich den Squash-Portage vom UnionFS ins Squash-Image rüberschreiben wollte. Mit der Sysrescue-CD konnte ich die Partition noch mounten und alle Daten auf ein Backup ziehen. Reparieren ging leider nicht mehr. Also bin ich noch immer bei 2.6.37. Edward scheint wohl mit den Reiser4-Patches etwas mehr Arbeit zu haben, so dass die Reiser4-Unterstützung in Zukunft eher unsicher ist.

Und Ext will ich auf Root nicht. Ich mag die Idee des Compress-Plugings, das Reiser4 hatte und BTRFS ebenfalls anbietet.

----------

