Usare systemd-analyze

systemd analyze2

systemd-analyze è un comando da terminale che ci permette di analizzare il boot, alla ricerca di problemi che rallentano questa fase o suggerire ottimizzazioni per velocizzarla.

Il primo, semplice, comando è (si può omettere “time” che è usato di default):

$ systemd-analyze time
Startup finished in 15.573s (firmware) + 2.394s (loader) + 2.030s (kernel) + 1.914s (userspace) = 21.913s
graphical.target reached after 1.826s in userspace

Si vede che il boot sul mio PC è durato 22s in totale.
Possiamo approfondire la conoscenza del processo di avvio con il comando:

$ systemd-analyze blame
1.625s systemd-random-seed.service
1.359s systemd-resolved.service
544ms cpupower.service
124ms dev-nvme0n1p2.device
97ms udisks2.service
[...]

che mostra la durata di ogni servizio in successione. In realtà la lista non tiene conto dei rapporti fra i servizi (quale unità aspetta un’altra prima di avere il permesso di partire, ecc), per cui non è indicativa nel trovare le unità problematiche.
Per avere una lista gerarchica delle unità (service, target, device) si deve allora usare:

$ systemd-analyze critical-chain
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
graphical.target @1.826s
└─sddm.service @1.825s
    └─systemd-user-sessions.service @1.819s +1ms
        └─network.target @1.815s
        [...]

che mostra un diagramma ad albero con le dipendenze di un’unità da un’altra. Questa lista è più informativa per la ricerca di problemi e ottimizzazioni. Per esempio se troviamo che il servizio “systemd-udev-settle.service” ci mette parecchio tempo ad avviarsi e sappiamo che non è utilizzato (nella maggioranza dei casi è così!), lo possiamo mascherare in modo che venga saltato al prossimo boot.
Comunque questo comando non è di agevole lettura e interpretazione perché consiste in una lunga lista di testo.
Molto più comodo è il comando:

$ systemd-analyze plot >bootup.svg

che indirizza l’output (simile a quello di critical-chain) in una immagine svg da visualizzare comodamente con Inkscape o altro programma. Avere sotto gli occhi il grafico ad albero permette di vedere immediatamente quale unità ci mette più tempo ad avviarsi e diventa un blocco per i servizi successivi. In pratica, più la colonna rosa è stretta e verticale meno rallentamenti ci sono nel boot.

AVvXsEjG9v5a8bgQ5rKh0IoIgggZ2b2YrOkHXedxkfiCQkY02 0HjZ736XGue6TADfLsNSongjdEjeBwiId92aqvIA4oYunOiW12Tz3JxLJ2N9tpwCkhbPIbGVFJsOiCxDsAbVuYVkn0oZ5qE6wRe2fh86Jnt9jhMdNi1o6zjgLtefIsywoQ1Rc2cFzoJGYx=w433 h259

C’è ancora un altro comando che può essere utile:

$ systemd-analyze dot ...

Che permette di creare un grafico svg in cui sono mostrate tutte le relazioni fra un unità e l’altra. Ogni unità è visibile in un cerchio dedicato e ogni relazione è rappresentata da frecce di vari colori a seconda del tipo di relazione. Tale comando richiede però l’installazione dei programmi dot e graphviz. Un esempio di uso, per mostrare le relazioni fra i vari target, è il seguente:

$ systemd-analyze dot --to-pattern='*.target' –from-pattern='*.target' | dot -Tsvg >targets.svg

In generale, però, le unità e le loro relazioni sono talmente tante che l’immagine risultante è troppo densa e completamente illeggibile. L’unica possibilità è riuscire a circoscrivere il tipo di unità che vogliamo analizzare, per esempio:

$ systemd-analyze dot 'systemd-networkd.*' | dot -Tsvg > network.svg
Color legend: black = Requires
dark blue = Requisite
dark grey = Wants
red = Conflicts
green = After
AVvXsEizmuwA8msv1IEr6LUB5jVO 53Yaz9PFd03eMXbolmuzqSIHzK AfW6zwvok9RaajkdxU2q6 TuT6ffVJ9 uKQBHXYDo85fiR0wS9j5i5Kymu8FnyY0 Jid9 2T1zA3oUF6bYzhpAR6RLk6EOksaTVKPAazlrfor8ihKN1QOPKlELSJkYc6ch7shOW=w633 h85

Ma questo implica di conoscere già i servizi problematici e quindi, nella maggior parte delle volte, è inutile.
Un percorso per individuare i problemi potrebbe allora essere:

$ systemd-analyze
$ systemd-analyze plot > boot.svg

(da cui si ricava l’unità problematica)

$ systemd-analyze dot ‘unit_name.*’ | dot -Tsvg > unit_name.svg

Fonte: http://feedproxy.google.com/~r/MarcosBox/~3/S0j2GRTJ9_Q/usare-systemd-analyze.html

Visited 2 times, 1 visit(s) today
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!

Hai dubbi o problemi? Ti aiutiamo noi!

Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.
Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.