systemd-analyze ovvero come velocizzare l’avvio di Linux

Nella migrazione a Linux, soprattutto su distribuzioni leggere, la rapidità d'avvio è un punto di forza. Tuttavia, anche in Linux è possibile incorrere in rallentamenti. Il comando systemd-analyze permette di analizzare i tempi di avvio e ottimizzare il comportamento dei servizi.

Mag 2, 2025 - 12:03
 0
systemd-analyze ovvero come velocizzare l’avvio di Linux

Nella migrazione da Windows a Linux, specie se si selezionano distribuzioni particolarmente leggere e minimaliste, gli utenti spesso apprezzano la velocità di avvio del sistema operativo. Anche le macchine equipaggiate con hardware modesto si rivelano, spesso, piuttosto scattanti. Non è escluso, tuttavia, di incorrere in tempi di avvio insoddisfacenti, anche con Linux. Uno dei migliori comandi per velocizzare l’avvio di Linux è systemd-analyze.

Tutte le distribuzioni che utilizzano systemd come sistema di inizializzazione e gestione dei servizi, hanno il comando systemd-analyze disponibile di default. Tra di esse citiamo Debian e derivate (come Ubuntu, Linux Mint…), Fedora, CentOS, Arch Linux, Manjaro, OpenSUSE, Pop!_OS, Zorin OS.

systemd-analyze permette di analizzare e ottimizzare i tempi di avvio, il comportamento dei servizi e le performance generali del sistema, facilitando l’identificazione di eventuali colli di bottiglia nelle risorse e nelle operazioni di boot. In un contesto di prestazioni elevate e di ottimizzazione del sistema, systemd-analyze fornisce informazioni dettagliate che aiutano a risolvere problemi di lentezza e inefficienza.

Funzionalità principali di systemd-analyze

Uno degli usi principali di systemd-analyze è l’analisi dei tempi di avvio. Il comando principale, utilizzato senza inserire alcuna direttiva aggiuntiva, restituisce il tempo totale di avvio del sistema. Esempio di output:

Startup finished in 2.329s (kernel) + 5.123s (initrd) + 1min 12.345s (userspace) = 1min 19.797s

In questo esempio, 2.329s rappresentano i tempi necessari per il caricamento del kernel Linux, 5.123s per il caricamento dell’immagine di initrd (initial ramdisk) e 1min 12.345s il tempo necessario per avviare i processi utente e i servizi definiti in systemd.

Analisi dei tempi di avvio dei servizi su Linux

Un’altra funzionalità fondamentale di systemd-analyze è la possibilità di analizzare i singoli tempi di avvio dei servizi. Ciò è possibile utilizzando il comando seguente:

systemd-analyze blame

Il comando mostra una lista di tutti i servizi di sistema e il tempo che ciascuno ha impiegato per avviarsi. Un esempio di output potrebbe essere il seguente:

10.234s network.service
5.432s apache2.service
3.123s sshd.service

In questo caso, network.service ha impiegato più di 10 secondi per avviarsi, mentre apache2.service risulta avviato in circa 5 secondi. Queste informazioni sono fondamentali per identificare i servizi che potrebbero essere ottimizzati o avviati in parallelo per migliorare i tempi complessivi di avvio.

I comandi sudo systemctl disable e sudo systemctl mask permettono, rispettivamente di disattivare e mascherare il servizio indicato. Il primo disabilita l’avvio automatico del servizio, ma non impedisce l’avvio manuale. Il secondo (mask) impedisce completamente l’avvio del servizio (automatico e manuale) creando un link simbolico a /dev/null.

Non è ovviamente consigliabile mettersi a disattivare servizi senza essere consapevoli di ciò che si sta facendo. Tuttavia, systemd-analyze si rileva uno strumento preziosissimo per raccogliere informazioni e capire dove ci sono margini di miglioramento.

Visualizzazione della sequenza di avvio (Critical Path)

Un altro comando utile è systemd-analyze critical-chain, che fornisce una visualizzazione grafica della sequenza di avvio e dei servizi che sono interdipendenti l’uno dall’altro. La visualizzazione aiuta a comprendere come il processo di avvio si evolve e dove potrebbero esserci inefficienze o ritardi.

Studiando l’output restituito dal comando, è possibile controllare eventuali colli di bottiglia e identificare le modifiche necessarie per ridurre i tempi di avvio.

Analisi del consumo di risorse durante l’avvio di Linux

systemd-analyze offre anche un’analisi dettagliata dei consumi di risorse (CPU, memoria) durante il processo di avvio. Utilizzando il comando systemd-analyze plot, è possibile generare un grafico dei tempi di avvio dei vari componenti software e delle risorse che questi hanno utilizzato. Il grafico è utile per analizzare visivamente i colli di bottiglia.

Nello specifico, il comando systemd-analyze plot > boot.svg produce un file SVG che può essere visualizzato in un browser, mostrando un diagramma dettagliato delle fasi di avvio del sistema e dei relativi consumi di risorse.

Per aprire il file SVG, digitate semplicemente firefox boot.svg e premete il tasto Invio. Il browser di Mozilla mostra un’immagine, spesso di grandi dimensioni, che consigliamo di osservare ed esaminare usando i tasti freccia e lo zoom (CTRL+/CTRL-).