[Eisfair] Eisfair Starup Waits und VM (was: Re: pcspkr (et al))
Hilmar Böhm
hilmar.boehm at web.de
Mi Mär 6 22:41:17 CET 2019
Hallo Marcus,
Habe die Tests gemacht. Danke für den fertigen Echo-Block (ist ja ein Service! :-) )
Ergebnisse:
Wed Mar 5 09:43.31 CET 2919 Getartet udev daemon
Wed Mar 6 09:43.31 CET 2919 Trigger subsystems add
Wed Mar 6 09:43.31 CET 2919 Trigger devices add
Wed Mar 6 09:43.31 CET 2919 Trigger devices change
Wed Mar 6 09:43.33 CET 2919 Trigger devices change
Wed Mar 6 09:43.35 CET 2919 End Trigger
Wed Mar 5 09:43.36 CET 2919 Start Settle
Wed Mar 5 09:43.58 CET 2919 End Settle <--- 22s
-------------------------------------------------------
> ...und zwar nur die Echos aus dem udev-Initskript.
Das würde Dir so passen :-)
Ich habe noch ein paar Anmerkungen:
Der Übeltäter ist das "udevadm settle". Settle bedeutet meist <wait> bzw. timeouts.
Frage ist, ob das in einer VM auch erforderlich ist.
Die udevadm-ManPage sagt:
---------
udevadm settle [options]
Watches the udev event queue, and exits if all current events are
handled.
-t, --timeout=SECONDS
Maximum number of seconds to wait for the event queue to become
empty. The default value is 120 seconds. A value of 0 will check
if the queue is empty and always return immediately.
---------
Da eine VM in der Regel bereits (durch den Host) verfügbaren Speicher nutzt, entstehen keine langen Event-Queues, behaupte ich
mal. Ich habe es mit dem angehängten Parameter "-t 0" probiert und es funktioniert - ohne Waits! - einwandfrei!
Wenn man die 5s von udev-Start bis zu "Settle" und die 22s der "Settle"-Aktion zusammen zählt, kommt auf die 27 Sekunden, die
ich bereits a.a.O. berichtet habe.
Und wenn man jetzt auch noch die 10s Sleep (im Rahmen des "Waiting for SCSI/SATA/PATA devices coming up") beseitigt, von der
Thomas Bork berichtet hat (s. https://web.nettworks.org/forum/index.php?t=msg&goto=69927&&srch=%2Fbin%2Fsleep#msg_69927) und die
in einer virtualiserten Umgebung m.E. unnötig sind,
gewinnt man über ein halbe Minute beim Booten - vor allem auf langsameren Hosts. Das ist doch schon was!!
Zudem:
Der Eisfair-Kernel der VM weiss ja bereits, dass es auf einem KVM-Hypervisor läuft.
Siehe: /var/log/messages: "... eis klogd: Hypervisor detected: KVM".
(Der Kernel müsste diese Info "exportieren", somehow).
In den Startup-Scripts gibt es auch Möglichkeiten festzustellen, ob die das System auf einem Hypervisor läuft (z.B. "dmidecode",
ist im Basis-Eisfair vorhanden).
In diesem Falle, werden die beiden Befehle _nicht_ aufgeführt.
Falls Eisfair "bare metal" läuft, werden die Waits beibehalten. Alles bleibt beim alten. Keine weitere Änderung erforderlich.
Ich denke, das sollte ohne großen Aufwand möglich sein.
In der Hoffnung, mich nicht zu weit aus dem Fenster gelehnt zu haben, :)
viele Grüße. / Hilmar.
Btw., Marcus: Hast Du in S03udev diese Variable "OMIT_UDEV_SETTLE" im if Statement gesehen, in der das "udevadm settle"
eingebettet ist? Wo wird diese Variable gesetzt und unter welchen Bedingungen?
Am 06.03.19 um 07:55 schrieb Marcus Roeckrath:
> Im udev Initskript gibts es den Block, den ich um einige echo erweitert
> habe:
>
> echo $(date) "Starte udev daemon"
> /sbin/udevd --daemon
> echo $(date) "Gestartet udev daemon"
>
> # Now traverse /sys in order to "coldplug" devices that have
> # already been discovered
> echo $(date) "Trigger subsystems add"
> /sbin/udevadm trigger --action=add --type=subsystems
> echo $(date) "Trigger devices add"
> /sbin/udevadm trigger --action=add --type=devices
> echo $(date) "Trigger devices change"
> /sbin/udevadm trigger --action=change --type=devices
> echo $(date) "End Trigger"
>
> # Now wait for udevd to process the uevents we triggered
> if ! is_true "$OMIT_UDEV_SETTLE"
> then
> echo $(date) "Start Settle"
> /sbin/udevadm settle
> echo $(date) "End Settle"
> fi
>
> # If any LVM based partitions are on the system, ensure they
> # are activated so they can be used.
> if [ -x /sbin/vgchange ]
> then
> echo $(date) "Start vgchange"
> /sbin/vgchange -a y >/dev/null
> echo $(date) "End vgchange"
> fi
>
> Sieht ziemlich rustikal aus, aber manchmal muss der Holzhammer sein. Wir
> sollten nun herausbekommen, welches der ausgeführten Kommandos so lange
> braucht.
>
Mehr Informationen über die Mailingliste Eisfair