Le prestazioni sono una delle parti più complicate dell'amministrazione dei sistemi. Ogni volta che stai cercando di indagare sull'origine delle prestazioni scadenti o sul motivo dell'elevato carico di lavoro, hai bisogno degli strumenti giusti per farlo.
Perf è uno di quegli strumenti. È un contatore delle prestazioni per Linux che puoi utilizzare per raccogliere dati sulle prestazioni del tuo sistema.
Vedremo come installarlo su Ubuntu e Centos e faremo una piccola guida all'utilizzo di base dei comandi.
Installazione di Perf su Ubuntu
Perf fa parte del pacchetto "linux-tools" in Ubuntu ed è installato come qualsiasi altro pacchetto che utilizza apt. Assicurati solo di avere le fonti aggiornate.
sudo apt update
Innanzitutto, installa il pacchetto linux-tools-common:
sudo apt install linux-tools-common
Successivamente, è necessario un pacchetto specifico per il kernel in esecuzione. Per ottenere la versione esatta del tuo kernel, usa il seguente comando:
uname -r
Otterrai la versione esatta del kernel.
Puoi installare il pacchetto linux-tools specifico o se non esiste una versione specifica del pacchetto per il tuo kernel, puoi usare il pacchetto linux-tools-generic. Ma questo potrebbe non funzionare come previsto. Come regola generale, perf non funzionerà o non funzionerà come previsto, se il pacchetto linux-tools non corrisponde all'esecuzione (molto importante! l'esecuzione, non la versione installata) del kernel Linux.
Installazione di Perf su CentOS
Come al solito, i nomi dei pacchetti variano da CentOS a Ubuntu ma la procedura è sostanzialmente la stessa, prime informazioni sul pacchetto di aggiornamento:
yum update
Esiste un pacchetto diretto che attiverà tutte le dipendenze in CentOS.
yum install perf
Utilizzo di base di Perf Command
Vediamo alcuni comandi di base su come usare perf. L'utilizzo più elementare di perf è, ovviamente, la pagina della guida, con il flag "–help" per vedere il riepilogo dei comandi
A seconda della configurazione del sistema, alcuni comandi di perf potrebbero essere limitati dalle politiche di sicurezza. Per disabilitare queste politiche basta usare:
echo 0 > /proc/sys/kernel/perf_event_paranoid
Esistono due grandi gruppi di comandi:comandi eseguiti su un sistema attivo e comandi eseguiti su un record di prestazioni.
Comandi su un sistema attivo
perf list [category]
Il comando precedente elenca tutti i tipi di eventi disponibili nel sistema. Questa è una lunga lista e, a seconda della configurazione del sistema, sarà racchiusa in less/more. Se fornisci un valore di categoria, verranno mostrati solo gli eventi di questa categoria.
Le categorie disponibili sono:hw|sw|cache|tracepoint|pmu|event_glob
perf bench <category> <benchmark>
Il comando precedente crea diversi benchmark sul sistema. Sono suddivisi in diverse categorie (sched, mem, numa, futex, all) e ogni categoria ha un elenco di benchmark diverso.
Se vuoi controllare tutti i test di velocità della memoria, usa il comando seguente:
perf bench mem all
perf stat <command>
Il comando precedente restituirà le statistiche sulle prestazioni. Verrà prodotto qualcosa del genere
perf top
Verrà visualizzata un'analisi in tempo reale del profilo del sistema, come il migliore, ma più perfezionato.
Qui inizia il secondo gruppo di comandi.
Comandi su un record di prestazioni
Puoi registrare un profilo delle prestazioni di qualsiasi comando eseguito utilizzando la seguente riga di comando:
perf record [options]
Ciò produrrà un record grezzo dei registri delle prestazioni. La profondità di questo record dipenderà dall'installazione del tuo sistema. Potresti aver bisogno di pacchetti di debug o di sviluppo per ottenere tutti i dati di profilazione che potresti ottenere. Ci sono anche molti flag che ci permetteranno di controllare cosa verrà profilato, come verrà salvato e con quale frequenza verrà profilato.
Una volta che abbiamo il record delle prestazioni, ci sono diversi comandi per agire con questi dati, il più semplice è il seguente:
perf report -i <perf file> [options]
Questo genererà un rapporto del file delle prestazioni. Possiamo selezionare come dividere o ordinare i dati o quali dati vogliamo nel rapporto.
perf diff <datafile 1> <datafile 2> …
Questo ci consentirà di confrontare due esecuzioni, ad esempio, se vogliamo sapere come funziona il programma dopo aver modificato i parametri rispetto all'esecuzione di base.
perf lock -I <perf file>
Questo analizzerà tutti gli eventi di blocco in un file di prestazioni registrato in precedenza.
perf mem -t <Type> [ record <command> | report ]
Questo registrerà o riporterà da un record, profilando l'accesso alla memoria del tipo selezionato.
perf timechart
Questo creerà un grafico temporale dell'esecuzione della profilazione precedentemente registrata.
Con tutti questi strumenti a nostra disposizione, puoi iniziare a controllare cosa sta succedendo nel tuo server, puoi iniziare a creare profili di esecuzioni per testare diverse configurazioni e sarai armato con un vasto set di strumenti per ottenere il controllo delle prestazioni sul tuo sistema .