Resumen
Si el tiempo de inicio de tu servidor o PC con Linux tarda más de lo habitual, es necesario identificar la causa y reducir los retrasos innecesarios. Con el comando systemd-analyze, puedes medir fácilmente el tiempo total de arranque, rastrear los servicios del sistema que generan cuellos de botella e incluso validar los archivos de unidad. En este artículo, abordamos comandos clave de análisis y técnicas de optimización de rendimiento listos para aplicar en entornos reales.
1. Verificación del tiempo de arranque y medición de retrasos por secciones (time & blame)
El comando systemd-analyze mide y muestra el tiempo total transcurrido durante el proceso de arranque, así como el tiempo de inicialización del kernel y del espacio de usuario (userspace).
En el resultado de la ejecución, se puede confirmar que tomó un total de 315ms hasta que el sistema completó el inicio y alcanzó el entorno GUI en graphical.target.
⚙️ [Opciones principales]
time : Muestra el tiempo total consumido por el kernel y el espacio de usuario durante el arranque (comportamiento predeterminado).blame : Muestra la lista de servicios que causaron demoras en el arranque durante la inicialización, ordenados de forma descendente por tiempo consumido.critical-chain : Muestra el árbol de dependencias de servicios de la ruta crítica (cadena crítica en tiempo) que provoca demoras en el inicio.plot : Genera una línea de tiempo gráfica de la ejecución de cada servicio a lo largo de todo el proceso de arranque en formato SVG.dot : Genera las relaciones de dependencia entre servicios en formato Graphviz dot.

El comando systemd-analyze blame | head -n 10 ordena de forma descendente y permite verificar los 10 servicios principales cuyo tiempo de inicialización fue el más prolongado durante el arranque.
En el resultado de la ejecución, se observa que systemd-resolved.service (68ms) y ldconfig.service (67ms) fueron los que consumieron más tiempo en el proceso de inicialización del arranque.

2. Seguimiento de la ruta crítica en las demoras de arranque (critical-chain)
El comando systemd-analyze critical-chain imprime el árbol de dependencias (ruta crítica) de los servicios que influyeron directamente en la finalización del arranque del sistema.
En la salida, el texto después del símbolo @ indica el momento en que la unidad se activó o inició, y el valor después del símbolo + representa el tiempo que tardó en ejecutarse dicha unidad por sí misma.
Al observar el árbol resultante, se comprueba que para llegar a graphical.target (315ms), servicios como systemd-resolved.service (68ms) y systemd-journald.service (39ms) se encadenaron en serie, formando la ruta crítica de cuello de botella que causó la demora general del inicio.

El comando systemd-analyze critical-chain networking.service rastrea de forma selectiva la cadena crítica hasta que un servicio específico (en este caso, networking.service) se inicia.
Resulta muy útil cuando se desea aislar y analizar únicamente las dependencias de cuello de botella de un servicio de red o backend concreto, en lugar de toda la ruta del sistema.

3. Generación de un informe SVG visual de la línea de tiempo de arranque (plot)
Para almacenar y gestionar de forma ordenada los archivos de informes de análisis de arranque, ejecutamos el comando mkdir -p ~/systemd-reports para crear un directorio dedicado.

El comando systemd-analyze plot > ~/systemd-reports/boot-analysis.svg genera y guarda un archivo gráfico SVG con una línea de tiempo visual que muestra el punto de inicio y la duración de la ejecución de cada servicio ejecutado durante todo el arranque.
Permite identificar de manera intuitiva el flujo de ejecución paralela y los tramos de demora entre servicios mediante un gráfico visual, algo difícil de apreciar únicamente con registros de texto.

El comando ls -lh ~/systemd-reports/boot-analysis.svg comprueba la existencia del archivo de informe SVG generado y detalles como su tamaño (59KB).
El archivo SVG generado puede abrirse en un navegador web o visor de imágenes para analizar visualmente el gráfico detallado de la línea de tiempo de arranque.

4. Validación de errores de configuración y estado de seguridad de unidades de servicio (verify & security)
El comando sudo systemd-analyze verify /lib/systemd/system/ssh.service valida de antemano si existen errores sintácticos u omisiones de configuración en el archivo de unidad especificado.
Que no se muestre ningún mensaje en la salida indica que el archivo de unidad del servicio no presenta defectos sintácticos ni errores de configuración.

El comando systemd-analyze security ssh.service diagnostica los ajustes de aislamiento de seguridad y el nivel de exposición del sistema (Security Exposure) de la unidad de servicio indicada.
A través del resultado de la ejecución, se puede revisar detalladamente el estado de aplicación de parámetros de seguridad clave, como la ejecución con privilegios de root (User=), el control de acceso a dispositivos (PrivateDevices=) y la prevención de escalada de privilegios (NoNewPrivileges=), junto con la puntuación de exposición a riesgos.

Hasta aquí hemos revisado de forma concisa cómo utilizar el comando systemd-analyze para identificar y optimizar los servicios que actúan como cuellos de botella en el arranque.
Depura los servicios innecesarios y disfruta de un entorno de arranque de Linux mucho más fluido y veloz.