[systemd-devel] Understanding systemd-analyze's plots

Frederic Crozat fcrozat at suse.com
Mon Nov 28 02:55:57 PST 2011


Le samedi 26 novembre 2011 à 22:52 +0100, Stefan Majewsky a écrit :
> Hi,
> 
> my openSUSE 12.1 system boots in about 30 seconds, and I wanted to cut
> that time down a bit, so I took a look at systemd-analyze's blame and
> plot output.
> 
> But I do not really know how to interpret the results which I see in
> the plot [1]. The startup sequence takes 20.5 seconds in userspace, of
> which only the last 3 seconds seem to be spent on what I consider "the
> interesting stuff": starting all sorts of services and finally
> bringing up KDM.
> 
> The rest of the time seems to be spent activating the hardware,
> various mounts and udev. (According to the LED on my notebook's case,
> the disk is busy all the time.) To put my confusion into questions:
> 
> 1. Why does the system need 6 seconds (from t=6.3s to t=12.3s on the
> plot) to activate some tmpfs mounts?
> 
> 2. Why is localnet.service activating for a whole 7 seconds? I looked
> into it, it's only a SysV init script that sets hostname and
> domainname from the config in /etc, yet it's number 1 in
> systemd-analyze blame.
> 
> 3. Why does it look like about nothing happens between t=13s and t=22s?
> 
> It might be that openSUSE's unit files (or SysV leftovers) are not yet
> optimized for the early boot: For example, I seem to have saved some
> seconds by masking lvm.service (I don't use LVM at all). But that
> won't explain why systemd is actually slower on this stage of boot vs.
> the old SysV init some distro versions ago.
> 
> Can someone enlighten me?

Some comments regarding your numbers, since they might be caused by
tradeoffs I had to put in openSUSE systemd package :
- if you don't use cryptsetup (encrypted partition), you should run
"systemctl mask storage-after-cryptsetup.service", it should remove the
lvm.service reload after cryptsetup.target is reached
- if you don't use lvm, systemctl mask lvm.service might help too
- localnet.service is still doing too much work, because part of its
work is already done by systemd but I didn't had time to move the
nisdomain part out of /etc/init.d/boot.localnet to a separate script
(or .service).

-- 
Frederic Crozat <fcrozat at suse.com>
SUSE



More information about the systemd-devel mailing list