Sep292015

Optimizar los servicios de arranque con systemd

Si cada vez que arrancáis  vuestros ordenadores con linux tarda una eternidad en llegar  a la pantalla de login, es buena idea ver si existe algún servicio que no sea necesario y que este consumiendo mucho tiempo en el arranque del sistema.

Actualmente,  la mayoría de las distribuciones linux principales han migrado de init a systemd como sistema predeterminado para la gestión de demonios.  Nosotros vamos a aprovechar la utilidad systemd-analyze para intentar averiguar que servicios no son necesarios y poder deshabilitarlos.

Si ejecutamos el comando tal cual(como root, importante) se nos mostrará algo como esto:

# systemd-analyze

Startup finished in 2.291s (kernel) + 1.671s (initrd) + 3.069s (userspace) = 7.031s

Como podéis ver lo que nos muestra es el tiempo total del arranque del sistema, desglosando el tiempo en espacio de usuario , de kernel y en la carga del initrd. Esto está bien como información general, pero lo que nos interesa es saber los procesos que se ejecutan y cuanto tiempo consumen. Para eso le pasamos el parámetro blame.

# systemd-analyze blame

2.286s dkms_autoinstaller.service
1.018s plymouth-start.service
949ms plymouth-quit-wait.service
435ms fedora-storage-init.service
167ms systemd-udev-settle.service
143ms NetworkManager.service
89ms iscsid.service
83ms bumblebee-nvidia.service
75ms home.mount
73ms systemd-sysctl.service
66ms systemd-fsck-root.service
59ms acpid.service
54ms fedora-loadmodules.service
54ms iprinit.service
53ms iprupdate.service
47ms gdm.service
46ms systemd-binfmt.service
43ms proc-sys-fs-binfmt_misc.mount
42ms systemd-udev-trigger.service
35ms systemd-modules-load.service
34ms accounts-daemon.service
32ms sys-kernel-debug.mount
32ms dev-mqueue.mount
32ms dev-hugepages.mount
31ms systemd-vconsole-setup.service
26ms systemd-tmpfiles-clean.service
25ms systemd-udevd.service
25ms iprdump.service
25ms fedora-storage-init-late.service
22ms sendmail.service
19ms mcelog.service
17ms udisks2.service
17ms irqbalance.service
16ms colord.service
16ms bluetooth.service
14ms rtkit-daemon.service
13ms systemd-logind.service
13ms plymouth-read-write.service
11ms sm-client.service
11ms alsa-restore.service
10ms fedora-readonly.service
10ms polkit.service
9ms restorecond.service
8ms sshd.service
8ms systemd-user-sessions.service
7ms upower.service
5ms sys-kernel-config.mount
5ms systemd-tmpfiles-setup.service
4ms fedora-import-state.service
4ms systemd-readahead-replay.service
3ms systemd-readahead-collect.service
3ms xsupplicant.service
3ms systemd-remount-fs.service
3ms var-tmp.mount
2ms var-log.mount
2ms wpa_supplicant.service
2ms sys-fs-fuse-connections.mount
2ms systemd-readahead-done.service
2ms tmp.mount
1ms rpcbind.service
1ms systemd-update-utmp-runlevel.service
1ms systemd-journal-flush.service
1ms systemd-random-seed-load.service

Como veís hay un buen par de servicios, aunque la mayoría tardan unos pocos milisegundos, vamos a centrarnos en los primeros de la lista usando el comando head de la bash.

# systemd-analyze blame | head

2.286s dkms_autoinstaller.service
1.018s plymouth-start.service
949ms plymouth-quit-wait.service
435ms fedora-storage-init.service
167ms systemd-udev-settle.service
143ms NetworkManager.service
89ms iscsid.service
83ms bumblebee-nvidia.service
75ms home.mount

Lo único que nos queda es estudiar que servicio no son necesarios en nuestro caso y desactivarlos con el siguiente comando

# systemctl disable nombre.service

EDIT

El comando disable permite desactivar aquellos servicios que se inicien de forma automática, pero no evita que se inicien de forma manual.

Para evitar que un servicio pueda ser iniciado, se debe usar el siguiente comando.

# systemctl mask nombre.service

Esto lo que hace es crear un enlace símbolico a /dev/null .

Gracias al comentario de “El che”.

 

Espero que os sirva para mejorar el arranque de vuestras máquinas  y de paso aprendéis otra cosita más.

Saludos 😀

 

Política de comentarios

Dada la importancia de los comentarios como espacio de participación, te pedimos por favor que leas detenidamente y cumplas con las siguientes normas de participación.

8 respuestas para “Optimizar los servicios de arranque con systemd

El Che

Excelente artículo, por mi parte agregaría que algunas veces es necesario utilizar el comando masked para evitar que se carguen algunos servicios al inicio.

Saludos.


Hugo J. H.

Gracias por el comentario, ya he añadido la correspondiente edición para incluir el masking.

Saludos.


Liher

Muy bueno, en mi caso no he notado que se vaya haciendo el arranque mas lento, pero esta bien saberlo. Muy bueno el articulo, un saludo compañero.


davidochobits

Hola,
Interesante artículo, lo probaré en cuanto tengo un minuto.
Saludos!


Hugo J. H.

Hola Liher y davidochobits, gracias por vuestros comentarios.
Aunque no lo parezca, apreciamos mucho vuestras opiniones pues ello da un valor añadido a los artículos y, como en este caso, ayuda a descubrir cosas que como es normal pasamos por alto los redactores.
Como siempre, el debate nos enriquece a todos y hace que salgamos con un poco más de conocimiento que el simple contenido del artículo.

Además quiero recordaros que podéis sugerir temas que os resulten interesantes y/o que tengan mucho juego.
Hablo por mi parte y quizás por la de Elías que al trabajar día a día con GNU/Linux, nos resulta más costoso ver el potencial a diversos tópicos. He ahí la importancia de las sugerencias.

Saludos y gracias nuevamente a “El che” por el apunte.


fraciel

Que buen blog, no sabia que existiera muy buenos contenidos.


José Miguel

Muchas gracias y bienvenido.

Saludos.


Deja un comentario

Tu dirección de correo electrónico no será publicada.