systemd-analyze
systemd-analyze blame
systemd-analyze
systemd-analyze time
systemd-analyze time
systemd-analyze time
systemd-analyze time
Startup finished in 3.415s (kernel) + 6.712s (userspace) = 10.128s
graphical.target reached after 6.492s in userspace.
Startup finished in 3.415s (kernel) + 6.712s (userspace) = 10.128s
graphical.target reached after 6.492s in userspace.
Startup finished in 3.415s (kernel) + 6.712s (userspace) = 10.128s
graphical.target reached after 6.492s in userspace.
systemd-analyze(1)
systemd-analyze blame | head -n 15
systemd-analyze blame | head -n 15
systemd-analyze blame | head -n 15
4.277s apt-daily.service
1.672s systemd-networkd-wait-online.service
1.653s apt-daily-upgrade.service
1.636s fstrim.service
1.567s cloud-init-main.service
4.277s apt-daily.service
1.672s systemd-networkd-wait-online.service
1.653s apt-daily-upgrade.service
1.636s fstrim.service
1.567s cloud-init-main.service
4.277s apt-daily.service
1.672s systemd-networkd-wait-online.service
1.653s apt-daily-upgrade.service
1.636s fstrim.service
1.567s cloud-init-main.service
Type=simple
critical-chain
systemd-analyze critical-chain
systemd-analyze critical-chain
systemd-analyze critical-chain
graphical.target @6.492s
└─multi-user.target @6.490s └─tailscaled.service @5.680s +806ms └─basic.target @5.558s └─sockets.target @5.556s └─uuidd.socket @5.554s └─sysinit.target @5.513s └─cloud-init-network.service @5.104s +395ms └─systemd-networkd-wait-online.service @3.427s +1.672s
graphical.target @6.492s
└─multi-user.target @6.490s └─tailscaled.service @5.680s +806ms └─basic.target @5.558s └─sockets.target @5.556s └─uuidd.socket @5.554s └─sysinit.target @5.513s └─cloud-init-network.service @5.104s +395ms └─systemd-networkd-wait-online.service @3.427s +1.672s
graphical.target @6.492s
└─multi-user.target @6.490s └─tailscaled.service @5.680s +806ms └─basic.target @5.558s └─sockets.target @5.556s └─uuidd.socket @5.554s └─sysinit.target @5.513s └─cloud-init-network.service @5.104s +395ms └─systemd-networkd-wait-online.service @3.427s +1.672s
systemd-networkd-wait-online.service
critical-chain
systemd-analyze plot > bootup.svg
xdg-open bootup.svg
systemd-analyze plot > bootup.svg
xdg-open bootup.svg
systemd-analyze plot > bootup.svg
xdg-open bootup.svg
network-online.target
systemctl list-dependencies --reverse --no-pager network-online.target
systemctl list-dependencies --reverse --no-pager network-online.target
systemctl list-dependencies --reverse --no-pager network-online.target
network-online.target
● ├─cloud-config.service
● ├─cloud-final.service
● └─exim4.service
network-online.target
● ├─cloud-config.service
● ├─cloud-final.service
● └─exim4.service
network-online.target
● ├─cloud-config.service
● ├─cloud-final.service
● └─exim4.service
systemctl show -p Wants -p Requires -p Before -p After network-online.target
systemctl show -p Wants -p Requires -p Before -p After network-online.target
systemctl show -p Wants -p Requires -p Before -p After network-online.target
Requires=
Wants=systemd-networkd-wait-online.service
Before=apt-daily.service cloud-final.service exim4.service
After=systemd-networkd-wait-online.service cloud-init-network.service network.target
Requires=
Wants=systemd-networkd-wait-online.service
Before=apt-daily.service cloud-final.service exim4.service
After=systemd-networkd-wait-online.service cloud-init-network.service network.target
Requires=
Wants=systemd-networkd-wait-online.service
Before=apt-daily.service cloud-final.service exim4.service
After=systemd-networkd-wait-online.service cloud-init-network.service network.target
network-online.target
systemd.special(7)
network.target
network-online.target
systemd-networkd-wait-online.service
systemd-networkd-wait-online.service(8)
systemd-networkd
sudo systemctl disable systemd-networkd-wait-online.service
sudo systemctl enable [email protected]
sudo systemctl reboot
sudo systemctl disable systemd-networkd-wait-online.service
sudo systemctl enable [email protected]
sudo systemctl reboot
sudo systemctl disable systemd-networkd-wait-online.service
sudo systemctl enable [email protected]
sudo systemctl reboot
sudo systemctl edit systemd-networkd-wait-online.service
sudo systemctl edit systemd-networkd-wait-online.service
sudo systemctl edit systemd-networkd-wait-online.service
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any --interface=eth0 --timeout=15
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any --interface=eth0 --timeout=15
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any --interface=eth0 --timeout=15
sudo systemctl daemon-reload
sudo systemctl reboot
sudo systemctl daemon-reload
sudo systemctl reboot
sudo systemctl daemon-reload
sudo systemctl reboot
systemd-analyze time
systemd-analyze blame | head -n 15
systemd-analyze critical-chain
systemd-analyze time
systemd-analyze blame | head -n 15
systemd-analyze critical-chain
systemd-analyze time
systemd-analyze blame | head -n 15
systemd-analyze critical-chain
mkdir -p ~/boot-profiles
stamp=$(date +%F-%H%M%S)
{ echo "## $stamp" systemd-analyze time echo systemd-analyze blame | head -n 20 echo systemd-analyze critical-chain
} > ~/boot-profiles/$stamp.txt
mkdir -p ~/boot-profiles
stamp=$(date +%F-%H%M%S)
{ echo "## $stamp" systemd-analyze time echo systemd-analyze blame | head -n 20 echo systemd-analyze critical-chain
} > ~/boot-profiles/$stamp.txt
mkdir -p ~/boot-profiles
stamp=$(date +%F-%H%M%S)
{ echo "## $stamp" systemd-analyze time echo systemd-analyze blame | head -n 20 echo systemd-analyze critical-chain
} > ~/boot-profiles/$stamp.txt
multi-user.target
graphical.target
systemd-analyze time
systemd-analyze blame | head -n 15
systemd-analyze critical-chain
systemd-analyze plot > bootup.svg
systemctl list-dependencies --reverse --no-pager network-online.target
systemd-analyze time
systemd-analyze blame | head -n 15
systemd-analyze critical-chain
systemd-analyze plot > bootup.svg
systemctl list-dependencies --reverse --no-pager network-online.target
systemd-analyze time
systemd-analyze blame | head -n 15
systemd-analyze critical-chain
systemd-analyze plot > bootup.svg
systemctl list-dependencies --reverse --no-pager network-online.target
disable --now
systemd-analyze blame
critical-chain
systemd-analyze(1)
systemd.special(7)
systemd-networkd-wait-online.service(8) - measure boot time correctly
- identify the real boot bottleneck
- visualize the boot path
- inspect who is pulling in a slow dependency
- make targeted fixes instead of random boot-time surgery - time in the kernel before userspace
- time in the initrd, if one exists
- time until normal userspace has spawned system services - a unit may look slow because it is waiting for another unit
- units of Type=simple do not show meaningful startup timing here
- it only reports time spent in the activating state - @ = when the unit became active
- + = how long that unit itself took to start - you can see parallelism vs serialization
- you can spot long waits before a unit even starts
- you can distinguish "slow unit" from "slow dependency chain" - if nothing important depends on network-online.target, boot delay may be accidental
- if remote mounts depend on it, the wait may be justified
- if only one consumer needs it, fix that consumer or narrow the wait condition - network.target is a passive synchronization point and usually does not add much delay
- network-online.target is an active target used by consumers that strictly require configured networking, and it can add substantial boot delay - remote filesystems
- network-backed identity or config on boot
- cloud-init stages that expect usable networking
- services that genuinely must start only after routable connectivity exists - How long did boot take?
- Which units consumed time?
- Which chain delayed the final target?
- What did parallel startup actually look like?
- Which unit asked for the expensive dependency? - systemd-analyze(1): https://manpages.debian.org/bookworm/systemd/systemd-analyze.1.en.html
- systemd.special(7): https://manpages.debian.org/bookworm/systemd/systemd.special.7.en.html
- systemd-networkd-wait-online.service(8): https://manpages.debian.org/bookworm/systemd/systemd-networkd-wait-online.service.8.en.html