systemd-analyze-featured2

Cada vez más sistemas operativos se hinchan con una gran cantidad de servicios que se ejecutan en segundo plano. Aunque es posible que no usen mucho tiempo de CPU, aumentan el tiempo de arranque y el uso de RAM.

Algunas distribuciones de Linux incluyen “todo menos el fregadero”, en un esfuerzo por hacer la vida del usuario más fácil. Esto hace que cosas como compartir archivos o imprimir funcionen a la perfección. Desafortunadamente, la única manera de hacer esto es incluir cientos de utilidades para que cada uno encuentre lo que necesita.

Afortunadamente, los sistemas operativos de código abierto te dan el poder y la libertad de hacer lo que creas conveniente. Esto significa que puedes deshabilitar o eliminar cualquier cosa que no necesites. La primera opción, cómo desactivar los servicios, se explorará aquí. Cuando desactivas, en lugar de quitar los componentes, hay menos riesgo de que se rompan permanentemente las cosas. Y puede volver a ser como era antes simplemente habilitando de nuevo un servicio si notas que algo útil ha dejado de funcionar.

Analizar el tiempo que tarda cada servicio en cargarse

La mayoría de los sistemas operativos basados en Linux han migrado a Systemd. Entre el conjunto de utilidades que incluye, hay un programa que permite analizar lo rápido que arranca tu sistema. Específicamente, te muestra el tiempo total requerido para arrancar y el tiempo que tarda cada servicio en cargarse. Ten en cuenta que algunos servicios se cargan en paralelo. Por lo tanto, si uno requiere dos segundos para cargar y los otros tres segundos, no significa necesariamente que se necesiten cinco segundos en total. Puede ser mucho menos que eso.

Abre un emulador de terminal e introduce este comando:

systemd-analyze

systemd-analyze-featured1

Esto muestra el tiempo que tardan en cargarse el núcleo de Linux y los servicios del sistema base, lo que significa que no tiene en cuenta el tiempo que su interfaz gráfica requiere para arrancar. Para decirlo de otra manera, esto te muestra cuánto tiempo se requiere, desde el momento en que se carga el kernel hasta que se deja caer en la consola de Linux, que se parece a lo que se muestra a continuación.

systemd-analyze-featured3

Si no tuvieras una interfaz gráfica instalada, esto es lo que recibirías en tu pantalla.

Sin embargo, también puedes ver el tiempo que necesita la interfaz gráfica para inicializar con este comando:

systemd-analyze critical-chain graphical.target

systemd-analyze-featured4

Esto muestra que la interfaz gráfica de usuario se cargó en 2.126 segundos. Esto no tiene en cuenta el tiempo necesario para cargar las utilidades de escritorio. Para habilitarlas/deshabilitarlas, ejecuta el administrador de inicio del entorno de escritorio.

Finalmente, probablemente el comando más útil para el propósito de este tutorial es:

systemd-analyze blame

systemd-analyze-featured5

Puedes navegar por la lista con las teclas de flecha o Arriba y Abajo. Pulsar q para salir.

Usar systemctl para deshabilitar servicios innecesarios

Como puedes ver en la imagen anterior, el servicio de snapd tarda 1.295 segundos en cargarse. En una unidad SSD, esto es insignificante. Pero en un disco duro, este tipo de tiempos estarían en el orden de los segundos múltiples, y se sumarían a mucho al final. Además, en una unidad SSD muchas cosas se cargan en paralelo con una eficiencia increíble. En un disco duro es muy difícil que los servicios se carguen en paralelo. Las cabezas de lectura que flotan en los discos del disco tienen que moverse de un sector a otro, por lo que es casi imposible leer realmente los datos en paralelo.

Para simplificar, imagínate lo siguiente: si en una unidad SSD ve cinco servicios que requieren un segundo para arrancar, es probable que el tiempo total necesario para cargarlos todos sea inferior a 1,2 segundos. Si, en un disco duro, ves los mismos cinco servicios inicializarse en un segundo, es probable que el tiempo total de carga sea muy superior a cinco segundos.

Digamos que no necesitas el servicio snapd, que proporciona acceso a aplicaciones en contenedores. Puedes desactivarlo con este comando:

sudo systemctl disable snapd.service

Pero, si reinicias, notarás que el demonio snap sigue funcionando. Esto se debe a que otras dependencias pueden lanzarlo, incluso si está desactivado. Trata de ver cuáles pueden ser:

systemd-analyze blame | grep snap

systemd-analyze-featured6

snapd.seeded.service y snapd socket son los culpables. Un servicio hijo puede solicitar el lanzamiento de su servicio padre. Cuando desactivas uno, simplemente le dices que no se inicie automáticamente al arrancar por sí solo. Pero hay un método de fuerza bruta para evitar este problema.

Usar systemctl para enmascarar un servicio

sudo systemctl mask snapd.service

Esto básicamente hace que el archivo de servicio sea nulo, de modo que las aplicaciones no tienen forma de iniciar el servicio.

En la mayoría de los casos no es tan complicado deshabilitar un servicio. Este ejemplo ha sido elegido para mostrarte cómo manejar escenarios más complicados. En este caso, snapd.seeded.service y snapd.socket también deberían estar desactivados o enmascarados.

A continuación se muestra el tiempo de arranque mejorado.

systemd-analyze-featured7

De 4.078, el tiempo de arranque se redujo a 3.452 segundos, lo que supone una disminución de ~15%. No está mal, considerando que sólo un servicio fue desactivado, y esto es en un SSD. En un disco duro es mucho más fácil obtener resultados mucho más significativos.

En este ejemplo en particular, se podrían haber desactivado más servicios con un comando como: sudo systemctl mask avahi-daemon.service ModemManager.service thermald.service pppd-dns.service.

Si prefieres una aplicación gráfica para gestionar tus servicios, puedes echar un vistazo al proyecto Systemd Manager. Sin embargo, estarás limitado en lo que puedes hacer con él, ya que la línea de comandos ofrece mucha más flexibilidad.

 

Fuennte: Original | maslinux

¿Quién está en línea?

Hay 19230 invitados y ningún miembro en línea