Analiza el tiempo de arranque de #Linux con systemd-analyze

systemd-analyze se utiliza para determinar las estadísticas de rendimiento de arranque de tu sistema GNU/Linux sistema y recuperar otra información de estado y seguimiento del sistema y el administrador de servicios

Imagen: Óscar Sánchez Requena

Si alguna vez sientes que tu sistema GNU/Linux tarda mucho en arrancar desde que enciendes el equipo hasta que dispones de tu escritorio listo para usarse, puedes usar systemd-analyze con algunas de sus opciones para intentar ver dónde poder mejorar ese arranque.

Esta herramienta nos ofrece datos del tiempo que ha tardado cada tarea del proceso de arranque en diferentes formatos, diferentes opciones e incluso nos puede crear un gráfico con todos esos detalles.

systemd-analyze time

Este es el comando predeterminado, incluso si no especificamos ninguna opción y lo que hace es mostrarnos el tiempo pasado en el núcleo antes de que se alcance el espacio de usuario, el tiempo pasado en el initrd antes de que se alcance el espacio de usuario normal del sistema y el tiempo que tardó el espacio de usuario normal del sistema en inicializarse.

systemd-analyze

Startup finished in 1.932s (kernel) + 6.276s (initrd) + 43.100s (userspace) = 51.309s 
graphical.target reached after 43.064s in userspace.

systemd-analyze blame

Este comando muestra una lista de todas las unidades en ejecución, ordenadas por el tiempo que tardaron en inicializarse. Esta información se puede utilizar para optimizar los tiempos de arranque.

Hay que tener en cuenta que el resultado puede ser engañoso ya que la inicialización de un servicio puede ser lenta simplemente porque espera a que se complete la inicialización de otro servicio.

20.709s dev-sda1.device
20.709s dev-disk-by\x2did-scsi\x2d0ATA_Hitachi_HTS54505_TEA51A3RCXXH8R\x2dpart1.device
20.709s dev-disk-by\x2dpartuuid-0001c146\x2d01.device
20.709s dev-disk-by\x2dpath-pci\x2d0000:00:1f.2\x2data\x2d1.0\x2dpart1.device
20.709s dev-disk-by\x2duuid-37c201e9\x2d93c3\x2d45cb\x2d9289\x2dc336180dd8ca.device
20.708s dev-disk-by\x2did-scsi\x2d1ATA_Hitachi_HTS545050A7E380_TEA51A3RCXXH8R\x2dpart1.device
20.708s dev-disk-by\x2did-scsi\x2d35000cca6f9cd2559\x2dpart1.device
20.708s dev-disk-by\x2dpath-pci\x2d0000:00:1f.2\x2data\x2d1\x2dpart1.device
20.708s dev-disk-by\x2did-wwn\x2d0x5000cca6f9cd2559\x2dpart1.device
20.708s dev-disk-by\x2did-scsi\x2dSATA_Hitachi_HTS54505_TEA51A3RCXXH8R\x2dpart1.device
20.708s dev-disk-by\x2did-ata\x2dHitachi_HTS545050A7E380_TEA51A3RCXXH8R\x2dpart1.device
20.708s sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda1.device
20.708s dev-disk-by\x2ddiskseq-1\x2dpart1.device
...

systemd-analyze critical-chain

Este comando muestra un gráfico en forma de «árbol» de la cadena de unidades de tiempo crítico (para cada una de las UNIDADES especificadas o, de lo contrario, para el objetivo predeterminado).

El tiempo después de que la unidad esté activa o iniciada se imprime después del carácter «@». El tiempo que tarda la unidad en arrancar se imprime después del carácter «+».

Hay que tener en cuenta que el resultado puede ser engañoso ya que la inicialización de los servicios puede depender de la activación del socket y debido a la ejecución paralela de las unidades.

The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.

graphical.target @43.064s
└─display-manager.service @36.112s +6.951s
  └─systemd-user-sessions.service @36.043s +50ms
    └─remote-fs.target @36.040s
      └─iscsi.service @35.450s +588ms
        └─network-online.target @35.447s
          └─NetworkManager-wait-online.service @35.384s +59ms
            └─NetworkManager.service @34.192s +1.111s
              └─network-pre.target @34.172s
                └─wpa_supplicant.service @40.956s +238ms
                  └─dbus.service @19.584s +5.206s
...

systemd-analyze plot

Este comando muestra la información en un gráfico SVG, que detalla qué servicios del sistema se iniciaron y en qué momento, resaltando el tiempo que dedicaron a la inicialización o los datos de tiempo sin procesar en formato JSON o de tabla.

systemd-analyze plot > ~/arranque.svg

Podemos posteriormente abrir el gráfico al que hemos exportado los datos (arranque.svg en el ejemplo) con un editor de gráficos vectoriales como es Inkscape.


Estas son solo algunas de las opciones disponibles del comando systemd-analyze que tiene muchas otras opciones. Quizás es interesante guardar unos de estos datos cuando el sistema va bien y compararlo si vemos que el sistema se ralentiza al arrancar para comparar.

5 comentarios sobre “Analiza el tiempo de arranque de #Linux con systemd-analyze

  1. He visto muchos systemd-analyze y a nadie le sale firmware y loader. ¿Por qué? (cierto es que tengo puestos 3 segundos para que siga Grub, por si he de elegir algo) Si me lo puedes aclarar.

    systemd-analyze  ✔  11:51:45
    Startup finished in 13.303s (firmware) + 3.053s (loader) + 852ms (kernel) + 3.462s (initrd) + 12.785s (userspace) = 33.457s
    graphical.target reached after 12.779s in userspace

    Saludos

      1. Gracias. Así que eso (firmware y loader) sólo sale en instalaciones UEFI como la mia.

        ¿El systemd-analyze que pusistes es de una máquina que tienes en Legacy?

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.