Boot beschleunigen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Boot beschleunigen

Beitrag von scientific » 19.06.2017 12:42:11

Hi Leute!

Ich möchte euch einen Lösungsvorschlag präsentieren. Ich hab in meinem Laptop eine SSD, und mein Bootvorgang benötigte ab nach dem Laden des Kernels immer noch so um die 10-12 Sekunden. NetworkManager.service, ModemManager.service zeigten sehr sehr lange Zeiten zum starten in der Ausgabe von

Code: Alles auswählen

systemd-analyze plog > /home/$USER/bootchart.svg
Ich wusste ech lange nicht, warum NetworkManger so derart lange zum Starten brauchte... bis ich dann eine Erleuchtung erfuhr. :)

Ich starte bei mir schon beim Booten dropbox und minidlna.
Es gibt dropbox.target und minidlna.target, welche ein "WantedBy=network-online.target" in der [Install]-Section haben.
Diese beiden Targets wiederum starten dropbox@USER1.service, dropbox@USER2.service und auch minidlna@S1.service, minidlna@S2.service...

Der Start von dropbox benötigt schon mal 1,5 bis 2,5 Sekunden, minidlna ist auch durch das Parsen der Verzeichnisse nicht besonders schnell beim Start. In Summe ergibt das schon mal eine Startverzögerung von 4-5 oder mehr Sekunden, da über die Targets und die Abhängigkeit mit network-online.target das Beenden des Startvorganges von NetworkManager verzögert wird.

Exkurs:
Der Grund, warum ich Dropbox schon beim Booten für die einzelnen User starte ist folgender, ich habe öfter einmal größere Mengen an Fotos/Videos die ich in die Dropbox von meinem Smartphone sichere. Und damit ich sie, wenn ich heimkomme schon am Laptop zum Sichten habe, lade ich sie auch ohne meinem Userlogin schon runter.

Jetzt habe ich lange überlegt, wie ich die Verzögerung des Boots durch diese Dienste wegbekommen kann, da ich immer wieder von Bootzeiten von 2-3 Sekunden gelesen habe...
Ich kam auf die Idee dropbox.target und minidlna.target nicht mit WantedBy= an multi-user.target zu hängen, sondern einen Timer mit Target zu erstellen, an dessen Target ich dann die beiden Targets hänge:

Dieser Timer wird gestartet, wenn network-online.target gestartet wird.

Code: Alles auswählen

 # cat timer-online.timer
[Unit]
PartOf=network-online.target

[Timer]
OnActiveSec=20s
Unit=timer-online.target

[Install]
WantedBy=network-online.target
Wenn die 20 Sekunden abgelaufen sind, wird

Code: Alles auswählen

# systemctl cat timer-online.target
# /lib/systemd/system/timer-online.target
[Unit]
Description=Target after online
StopWhenUnneeded=yes
gestartet.

Dies ruft dann dropbox.target und minidlna.target auf, die wiederum eben die eigentlichen Services aufrufen, die zum Start länger benötigen.

Damit sieht dann die critical-chain so aus

# systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

Code: Alles auswählen

graphical.target @2.703s
└─upower.service @1.815s +887ms
  └─basic.target @1.812s
    └─sockets.target @1.812s
      └─uuidd.socket @1.812s
        └─sysinit.target @1.809s
          └─systemd-timesyncd.service @1.586s +222ms
            └─systemd-tmpfiles-setup.service @1.569s +10ms
              └─local-fs.target @1.568s
                └─var-spool-dovecot.mount @1.484s +84ms
                  └─var-spool.mount @1.072s +401ms
                    └─dev-disk-by\x2duuid-9081c6de\x2d4a5a\x2d4b85\x2dac42\x2df3853e26c048.device @1.071s
Ich bin bei 2,7 Sekunden statt bei 10-12 Sekunden.


Für NetworkManager ist nicht der Abschluss des Bootens von dropbox@.service interessant, sondern ob der Timer erfolgreich gestartet wurde. Dieser Start geht in wenigen Millisekunden vonstatten und NM kann weitermachen.

Da es unerheblich ist, ob die Dropbox sofort nach dem Login zur Verfügung steht, oder ein paar Sekunden später, ebenso minidlna, kann ich den Start dieser Services ruhig vom eigentlichen Boot-Vorgang abkoppeln und so den graphischen Login-Manager schneller zur Verfügung haben.

Ich liebe so Spielereien mit systemd. :-)

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: Boot beschleunigen

Beitrag von breakthewall » 19.06.2017 18:06:03

Ich finde das Theater rund um die Boot-Beschleunigung immer recht dubios. Ich mein was sind schon 12 Sekunden realistisch betrachtet, im Verhältnis zur Laufzeit des Systems? Fast nichts eigentlich, und SSDs werden immer schneller. Davon abgesehen kannst natürlich auch sehr sehr schlanke Desktops nutzen, oder den Linux-Kernel weiter ausmisten, und wenn den NetworkManager mit statischen IPs betreibst dann sparst nochmals Zeit.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 19.06.2017 18:36:33

Ja schon.
Meine SSD ist auch sehr schnell.

Aber...

Der Start des Netzwerks, der Start von Dropbox, der Start von Minidlna usw wird wohl auch mit der schnellsten SSD nicht mehr schneller.
Und wenn das hintereinander erfolgt, weil die units voneinander abhängig sind, dann hab ich einen nicht notwendigen Delay, der sich relativ einfach auflösen lässt wenn man weiß, was man tut.

Und in Relation zur Laufzeit wären wohl auch 5 Minuten Bootzeit ein Lärcherlschas.
Aber das ist nicht die relevante Frage.
Relevant ist nãmlich viel mehr, wenn ich mit dem Laptop unterwegs bin, oder "schnell" mal was erledigen muss, und die Bootzeit betrãgt das 10fache der eigentlichen Erledigungszeit...

Lg
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Boot beschleunigen

Beitrag von Lord_Carlos » 19.06.2017 19:17:25

Mhh, verstehe ich nicht ganz.

Was hat sich denn jetzt geaendert, mit Ausnahme das systemd-analyze einen kleineren Wert anzeigt?
Wenn nichts von Dropbox/Minidlna abhaenig ist, welche verbersesung hat man dann?

Edit: Oder war Networkmanager von Dropbox abhaenig?

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 19.06.2017 22:03:17

Lord_Carlos hat geschrieben:Mhh, verstehe ich nicht ganz.

Was hat sich denn jetzt geaendert, mit Ausnahme das systemd-analyze einen kleineren Wert anzeigt?
Wenn nichts von Dropbox/Minidlna abhaenig ist, welche verbersesung hat man dann?

Edit: Oder war Networkmanager von Dropbox abhaenig?
dropbox.target hatte lediglich eine Abhängigkeit

Code: Alles auswählen

[Unit]
PartOf=network-online.target
[Install]
WantedBy=network-online.target
Und dropbox@.service hatte die Abhängigkeit

Code: Alles auswählen

[Unit]
PartOf=network-online.target

[Install]
WantedBy=dropbox.target
Aber die führte offenbar dazu, dass NetworkManager.service erst dann als gestartet rückgemeldet wurde, nachdem das letzte dropbox@.service "fertig" gestartet war.

Und der Effekt durch die Lösung mit dem Timer, der dropbox und minidlna erst einige Sekunden nach erfolgreich aufgebauter Netzwerkverbindung startet ist nicht nur eine kürzere Zeitanzeige in systemd-analyze sondern tatsächlich ist der gdm deutlich merkbar schneller da.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Boot beschleunigen

Beitrag von catdog2 » 19.06.2017 22:40:15

Wäre nicht WantedBy=multi-user.target und After=network-online.target sinnvoller? Der login manager startet zumindest hier (sddm in dem Fall) sinnvollerweise weit vor dem network-online.target.
Unix is user-friendly; it's just picky about who its friends are.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 19.06.2017 23:39:11

catdog2 hat geschrieben:Wäre nicht WantedBy=multi-user.target und After=network-online.target sinnvoller? Der login manager startet zumindest hier (sddm in dem Fall) sinnvollerweise weit vor dem network-online.target.
Möglicherweise. Ich bin nur grad dabei, mein System etwas umzubauen. Hab mich dazu auch mit den Systemd-Entwicklern kurzgeschlossen.

Die Geschichte ist die, wenn am Laptop die Netzwerkverbindung beendet wird, gibts keine Benachrichtigung in systemd, und ich kann keine Services/Targets/Automounts beenden, wenn das Netz weg ist. Derzeit arbeite ich mit einem Dispatcher-Skript, welches network-online.target stoppt und wieder startet. Aber die systemd-Entwickler haben mir davon abgeraten. Ich solle eine eigene Target-Unit verwenden, welche eine Aufrechte Verbindung signalisiert.

Dropbox kann man natürlich auch ohne Netz weiterlaufen lassen. Und Minidlna wohl auch...

Ich werd mir aber mal deinen Vorschlag von oben noch mal genauer ansehen.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Boot beschleunigen

Beitrag von Lord_Carlos » 19.06.2017 23:45:51

Mhh, ja ich will mich die Tage auch nochmal mit systemd services und timers beschaeftigen.
Ich will jeden tag um X uhr ein service beenden, eins script starten und wenn es fertig ist den service wieder starten.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 20.06.2017 01:08:24

Lord_Carlos hat geschrieben:Mhh, ja ich will mich die Tage auch nochmal mit systemd services und timers beschaeftigen.
Ich will jeden tag um X uhr ein service beenden, eins script starten und wenn es fertig ist den service wieder starten.
Das klingt nach einer Herausforderung... :)

Wenn du da eine Lösung gefunden hast, würd mich die auf jeden Fall interessieren.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
schorsch_76
Beiträge: 2542
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Boot beschleunigen

Beitrag von schorsch_76 » 20.06.2017 06:55:58

Ich würde dropbox und minidlna in ein eigenes Target hängen. Dieses Target kannst du per grub übergeben wenn du bsp zuhause bist. Dann startet der Rechner wie gewohnt schnell. Wenn du dann im Netz bist, kannst du per Isolate das Target wechseln.

TomL

Re: Boot beschleunigen

Beitrag von TomL » 20.06.2017 10:59:27

scientific hat geschrieben:Die Geschichte ist die, wenn am Laptop die Netzwerkverbindung beendet wird, gibts keine Benachrichtigung in systemd, und ich kann keine Services/Targets/Automounts beenden, wenn das Netz weg ist. Derzeit arbeite ich mit einem Dispatcher-Skript, welches network-online.target stoppt und wieder startet. Aber die systemd-Entwickler haben mir davon abgeraten. Ich solle eine eigene Target-Unit verwenden, welche eine Aufrechte Verbindung signalisiert.
Wenn Du wolltest, könntest Du feststellen, dass es überhaupt keine Probleme gibt, wenn Du für das Öffnen und Schließen von NICs und für das Herstellen und Beenden von Verbindungen auf DHCPD und Networkmanager verzichten würdest. Das sind nämlich die beiden Kandidaten aus der Sysvinit-Ära, die sich noch nicht ordentlich ins systemd-universum eingefügt haben. Es ist total easy, das Netzwerk mit einer eigenen Unit zu öffnen und eigene Folge-Units davon abhängig zu machen, sowie in Conflict=shutdown.target zu setzen. Für Dich wären das nur Fingerübungen. Das Problem ist defintiv der NWM, der trotz offener Netzwerk-Mounts eine Verbindung kappt, ohne systemd zu informieren. Das geht zwar über die Dispatcher-Scripte zu lösen, was ich schon vor 2 Jahren gemacht habe... aber ich empfand das immer als Flickwerk. Das 'purgen' dieser Pakete hat heute alle Laptop-Probleme beseitigt.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 20.06.2017 11:30:25

TomL hat geschrieben:
scientific hat geschrieben:Die Geschichte ist die, wenn am Laptop die Netzwerkverbindung beendet wird, gibts keine Benachrichtigung in systemd, und ich kann keine Services/Targets/Automounts beenden, wenn das Netz weg ist. Derzeit arbeite ich mit einem Dispatcher-Skript, welches network-online.target stoppt und wieder startet. Aber die systemd-Entwickler haben mir davon abgeraten. Ich solle eine eigene Target-Unit verwenden, welche eine Aufrechte Verbindung signalisiert.
Wenn Du wolltest, könntest Du feststellen, dass es überhaupt keine Probleme gibt, wenn Du für das Öffnen und Schließen von NICs und für das Herstellen und Beenden von Verbindungen auf DHCPD und Networkmanager verzichten würdest. Das sind nämlich die beiden Kandidaten aus der Sysvinit-Ära, die sich noch nicht ordentlich ins systemd-universum eingefügt haben. Es ist total easy, das Netzwerk mit einer eigenen Unit zu öffnen und eigene Folge-Units davon abhängig zu machen, sowie in Conflict=shutdown.target zu setzen. Für Dich wären das nur Fingerübungen. Das Problem ist defintiv der NWM, der trotz offener Netzwerk-Mounts eine Verbindung kappt, ohne systemd zu informieren. Das geht zwar über die Dispatcher-Scripte zu lösen, was ich schon vor 2 Jahren gemacht habe... aber ich empfand das immer als Flickwerk. Das 'purgen' dieser Pakete hat heute alle Laptop-Probleme beseitigt.
Ich habs schon mehrfach erwähnt...

Ich bin mit meinem Laptop sowohl im heimischen LAN als auch WLAN (WPA-gesichert) unterwegs. Dann hab ich den gelegentlich in der Arbeit mit. Hänge dort wiederum am LAN oder WLAN.
Dann bin ich damit öfter im Zug unterwegs. Dort gibt es WLAN im Zug, oder ich verwende mein Handy per USB-Thetering oder auch mit Thetering per WLAN. Und dann bin ich noch gelegentlich mit einem Internet-Stick im Netz. Das hängt immer von der jeweils verfügbaren Netzqualität ab, welchen Weg ins Netz ich suche.

Für so ein Szenario ist systemd-networkd definitiv nicht entwickelt. Und für so ein Szenario wird das auch nicht empfohlen.

Abgesehen davon ist die Bedienung des Netzwerks über das Applet sehr komfortabel. Das bietet mir an, welche Verbindungen und Verbindungsmöglichkeiten zur Verfügung stehen und ich wähle einfach nur aus. Und das macht NWM wirklich gut.

Und ja... die Verbindung zu systemd ist mangelhaft.

Wie mir vor ein paar Tagen auf der systemd-Mailingliste gesagt wurde, ist systemd nicht dafür entwicklet worden, den Status einer Netzwerkverbindung zu überwachen, sondern lediglich die Netzwerkverbindung zu starten.

Ich vermute einmal, die Entwicklung von systemd-networkd ist noch lange nicht abgeschlossen. Und es wird noch eine Integration der Netzwerkverwaltung in Gnome3 mittels Applet/Extension entstehen, das dann NWM ablösen kann. Noch ist es nicht so weit.

Abgesehen davon denke ich gibt es sehr wohl eine Möglichkeit der Integration in systemd mittels dbus.
Am Gnome-Desktop erscheinen ja Benachrichtigungen, wann eine Netzwerkverbindung hergestellt oder getrennt wurde. Ich nehme an, dass funktioniert über dbus und zenity. Und diese Benachrichtigung über dbus müsste man heranziehen können, um damit Units/Targets starten und stoppen zu können... Nur habe ich noch nicht herausgefunden, wie.

lg scientific
Zuletzt geändert von scientific am 20.06.2017 11:36:34, insgesamt 2-mal geändert.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

TomL

Re: Boot beschleunigen

Beitrag von TomL » 20.06.2017 11:35:04

scientific hat geschrieben:ch vermute einmal, die Entwicklung von systemd-networkd ist noch lange nicht abgeschlossen. Und es wird noch eine Integration der Netzwerkverwaltung in Gnome3 mittels Applet/Extension entstehen, das dann NWM ablösen kann.
Einen Nachfolger des NWM, der sich auch wirklich an die Spielregeln von systemd hält und beim Trennen und Herstellen von Verbindungen entsprechende Targets oder Units einbezieht,.... der fehlt wirklich und den würde ich auch sofort wieder nutzen. Vielleicht kommt das ja irgendwann mal ...

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 20.06.2017 11:37:10

Hab meinen vorigen Beitrag grad noch ergänzt!

lg
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 20.06.2017 12:09:09

Ich hab mir jetzt doch mal kurz systemd-networkd angesehen.

Eine Frage - dich mich auch schon beim NWM beschäftigt - hab ich gleich mal vorweg:

Kann ich bei LAN-Verbindungen unterscheiden, in welchem LAN ich gerade bin, und davon abhängig unterschiedliches auslösen lassen?
Beim NWM geht das nämlich überhaupt nicht.

Hintergrund: Ich habe daheim einen Drucker. Wenn ich mich im WLAN verbinde habe ich eine eindeutige Connection-Kennzeichnung anhand derer ich über ein Skript diesen Drucker als Standarddrucker setzen kann. In der Arbeit im WLAN setze ich einen anderen.

Verbinde ich mich aber über das LAN-Kabel, wird lediglich die LAN-Verbindung-1 genommen. Sowohl daheim als auch in der Arbeit. Ich habe im NWM keine möglichkeit z.b. die MAC-Adresse des DHCP-Servers abzufragen und anhand derer dann eine andere Netzwerkverbindung zu aktivieren...

Mit dem Paket whereami ging das setzen eines Standarddruckers anhand verschiedener Kriterien der Netzinfrastuktur, nur ist das so gar nicht mehr mit NWM oder systemd-networkd kompatibel.
Im NWM kann ich auch nicht sagen, dass ich im LAN daheim eine fixe IP will, in der Arbeit aber im LAN eine dynamische mit DHCP vergebene. LAN ist LAN...

Kann das networkd besser?

Btw... systemd-networkd hat eine eigene Implementierung des dhcp-clients entwickelt, die NWM übernommen hat, da diese deutlich schneller als die herkömmliche arbeitet...

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 20.06.2017 13:55:19

Andere Frage...
Plymouth stellt ja wirklich hübsche Bootscreens zur Verfügung.
Ich mag das. Auch dass ich trotz plymouth mit ESC den Bootmeldungen folgen kann.

Jedoch verdoppelt und mehr plymouth die Bootzeit...

Uch hab schon den Tipp mit
FRAMEBUFFER=yes in der initramfs probiert... Ohne Verkürzung der Bootzeit.

Deinstalliere ich plymouth, startet der Rechner in 3-4 Sekunden ab geladenem Kernel.
Ist plymouth installiert, dauert der Boot 12 Sekunden ab geladenem Kernel.

Hat dazu jemand eine Idee?

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Boot beschleunigen

Beitrag von rendegast » 20.06.2017 15:56:34

Mit
OnActiveSec=xxx
des .timer habe ich wohl eine Verzögerung beim Shutdown/Reboot.

Mit
#RemainAfterElapse=off
habe ich herumprobiert

Ich lasse das jetzt mit
OnStartupSec=xxx
laufen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Boot beschleunigen

Beitrag von scientific » 20.06.2017 17:43:08

OnStartupSec bezieht sich ja auf den Zeitpunkt, wo systemd gestartet wurde. OnActiveSec zählt ab dem Zeitpunkt, wo die Timerunit gestartet wurde.

Warum sollte die eine Verzögerung beim Shutdown verursachen?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Boot beschleunigen

Beitrag von rendegast » 20.06.2017 20:59:12

scientific hat geschrieben: Warum sollte die eine Verzögerung beim Shutdown verursachen?
k.A., die letzte Meldung vor so einem Hänger war immer
"Stopped Advandced key-value store."
Nach 130 Sekunden geht es zum shutdown/reboot:
Jun 20 14:27:51 debian systemd[1]: ntopng.service: Killing process 2450 (ntopng) with signal SIGKILL.
Jun 20 14:27:51 debian systemd[1]: ntopng.service: State 'stop-sigterm' timed out. Killing.
Jun 20 14:26:24 debian systemd[1]: Stopped Advanced key-value store.
Jun 20 14:26:24 debian run-parts[2876]: run-parts: executing /etc/redis/redis-server.post-down.d/00_example
Jun 20 14:26:24 debian systemd[1]: Stopped target Remote File Systems.
Jun 20 14:57:09 debian systemd[1]: lxdm.service: Killing process 991 (lxdm-binary) with signal SIGKILL.
Jun 20 14:57:09 debian systemd[1]: lxdm.service: State 'stop-sigterm' timed out. Killing.
Jun 20 14:55:43 debian systemd[1]: Stopped Advanced key-value store.
Jun 20 14:55:43 debian systemd[1]: Stopped target Network is Online.
Jun 20 14:55:43 debian systemd[1]: Stopped Automounts filesystems on demand.
Anmerkung: Ich habe den .timer an graphical.target gebunden.
(EDIT mittlerweile doch Bindung des .timer an multi-user.target, s.u.)
Ich nehme an, daß bei OnActiveSec= doch noch einmal ein Starten des .timer veranlaßt wird,
das nicht mehr mögliche Ausführen der .target-Dienste aber timeouts verursacht.
Mit dem OnStartupSec= bleibt der .timer wohl nur auf das Booten des Systems beschränkt.





Explizit, lokal-blame.timer:

Code: Alles auswählen

[Unit]
PartOf=multi-user.target
#PartOf=graphical.target

[Timer]
#RemainAfterElapse=off

#OnStartupSec=25s
OnStartupSec=45s
#Auf meiner Maschine braucht der Boot ~ 65s bis zum X,
#mit 45s liegt der timer sicher hinter den neu erreichten ~ 50s bis zum X. 

Unit=lokal-blame.target

[Install]
WantedBy=multi-user.target
#WantedBy=graphical.target
lokal-blame.target:

Code: Alles auswählen

[Unit]
Description=Verzoegerung
StopWhenUnneeded=yes
Die zu verzögernden Services brauchen modifizierte Kopien derart
(Kopien, denn eine Install-Section und auskommentierte Before=
sind in einer dienst.service.d/blame.conf unwirksam.):

Code: Alles auswählen

[Unit]
...
#Before=foo.target
#Before=bar.service
...

[Service]
...

[Install]
#WantedBy=multi-user.target
WantedBy=lokal-blame.target
also Herausnehmen aus der bisherigen Beziehung und Unterbinden von Before=-Beziehungen.
Die beabsichtigten services dann jeweils disable/enable.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten