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-).