Αναλύοντας τον χρόνο εκκίνησης του υπολογιστή

Τι συμβαίνει όταν ξεκινά ο υπολογιστής

Μετα το grub θα αναλάβει ο πυρήνας, που στην συνέχεια θα δώσει τον έλεγχο σε μια υπηρεσία εκκίνησης. Στις περισσότερες διανομε αυτή είναι το systemd.

Θα πρέπει να ξεκινήσουν μια σειρά απο υπηρεσίες πρίν μας δώσει τον έλεγχο. Για παράδειγμα θα πρέπει να γίνει συντονισμός της ωρας με το διαδίκτυο. Επίσης να γίνει σύνδεση με το τοπικό δίκτυο και στην συνέχεια έλεγχος πρόσβασης στο internet.

Κάποια πράγματα θα πρέπει να γίνουν πρίν κάποια άλλα. Για παράδειγμα δεν μπορείς να ψάξεις για εκτυπωτές δικτύου, ή άλλους υπολογιστές άν δεν έχεις σύνδεση στο τοπικό δίκτυο. Ούτε να κάνεις συντονισμό ώρας, αν δεν έχεις internet.

H υπηρεσία εκκίνησης θα τα ξεκαθαρίσει αυτά, και θα κάνει όσο περισσότερα πράγματα μαζί ταυτόχρονα για να μας δώσει όσο το δύνατόν συντομότερα τον έλεγχο.

Αλλά κάποιες φορές ο υπολογιστής θα καθυστερεί σημαντικά, τότε θα πρέπει να βρούμε πρώτα τι παίρνει τόσο χρόνο, πριν κάνουμε οτιδήποτε άλλο. Στο άρθρο αυτό θα δούμε το πως

Αναλύοντας τον χρόνο εκκίνησης του υπολογιστή σε συστήματα με SystemD.

Μπορείς να δεις πόσο χρόνο θέλει με την εντολή

systemd-analyze time 
Startup finished in 18.494s (firmware) + 5.427s (loader) + 5.153s (kernel) + 25.498s (userspace) = 54.573s
graphical.target reached after 25.490s in userspace

και πόσο χρόνο θέλει το κάθε τι με την εντολή

 systemd-analyze blame
         24.055s vboxdrv.service
          2.664s NetworkManager-wait-online.service
          1.117s nfs-server.service
           767ms dev-sda4.device
           567ms mnt-nfs-nextcloud.mount
           417ms upower.service
           393ms systemd-hwdb-update.service
           378ms networkd-dispatcher.service
           371ms mnt-nfs-eBooks.mount
           351ms systemd-logind.service
           324ms systemd-resolved.service
           321ms systemd-journal-flush.service
           307ms ubuntu-system-adjustments.service
           298ms ModemManager.service
           290ms NetworkManager.service
           244ms udisks2.service
           213ms accounts-daemon.service
           212ms networking.service
           198ms systemd-timesyncd.service
           180ms grub-common.service
           168ms wpa_supplicant.service
           151ms apparmor.service
           130ms gpu-manager.service

Στο σύστημα μου είναι φανερό πως το vboxdrv.service παίρνει πραγματικά πολύ χρόνο. Αλλά είναι ο χρόνος αυτός κρίσιμος; Όχι απαραίτητα μιας και τα παραπάνω συμβαίνουν ταυτόχρονα. Ας βρούμε την κρίσιμη αλυσίδα

 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.

graphical.target @25.490s
└─multi-user.target @25.490s
  └─vboxautostart-service.service @25.482s +7ms
    └─vboxdrv.service @1.422s +24.055s
      └─basic.target @1.337s
        └─sockets.target @1.336s
          └─uuidd.socket @1.336s
            └─sysinit.target @1.316s
              └─systemd-timesyncd.service @1.116s +198ms
                └─systemd-tmpfiles-setup.service @1.074s +34ms
                  └─local-fs.target @1.068s
                    └─media-talos-Linux\x20Mint\x2019.3\x20Cinnamon\x2064\x2dbit.mount @16.177s
                      └─clean-mount-point@media-talos-Linux\x20Mint\x2019.3\x20Cinnamon\x2064\x2dbit.service @16.190s
                        └─system-clean\x2dmount\x2dpoint.slice @16.190s
                          └─system.slice @171ms
                            └─-.slice @162ms

Και όντως για να φτάσω στο γραφικό περιβάλλον (graphical.target) βάζει το χεράκι του στην καθυστέρηση.

Ας δούμε αναλυτικά τι συμβαίνει

  systemd-analyze plot > plot.svg && xdg-open plot.svg

Η πολύ πληροφορία βλάπτει. Καλύτερα να δω μόνο τα βασικά

systemd-analyze dot 'vboxautostart-service.*' | dot -Tpng > analyze.png
xdg-open analyze.png

Δες επίσης:

11 Likes

Όπως πάντα άψογος, μπράβο!!!

1 Like