GNU/Linux >> Linux Esercitazione >  >> Linux

Linux perf:come utilizzare il comando e il profiler

Introduzione

Lo strumento Linux perf è un'utilità della riga di comando leggera per la profilazione e il monitoraggio delle prestazioni della CPU sui sistemi Linux. Sebbene lo strumento sia semplice, fornisce informazioni approfondite che aiutano nell'analisi delle CPU.

Il comando contiene molti sottocomandi per la raccolta, la traccia e l'analisi dei dati degli eventi della CPU.

Questa guida mostra lo strumento perf attraverso esempi.

Prerequisiti

  • Accesso al terminale.
  • Accesso a root o utente con privilegi sudo.
  • Un editor di testo, come nano o Vi/Vim.

Come installare perf

Il programma perf non è preinstallato sui sistemi Linux. L'installazione differisce in base alla distribuzione Linux:

  • Ubuntu/Debian
sudo apt install linux-tools-$(uname -r) linux-tools-generic
  • RHEL/CentOS
sudo yum install perf
  • Fedora
sudo dnf install perf

Verifica l'installazione con:

perf --version

L'output stampa il numero di versione, indicando che l'installazione è riuscita.

Consenti agli utenti regolari di utilizzare perf

Il perf il comando, per impostazione predefinita, richiede sudo privilegi. Per consentire agli utenti regolari di utilizzare perf , procedi come segue:

1. Passa all'utente root:

sudo su -

2. Immettere il seguente comando:

echo 0 > /proc/sys/kernel/perf_event_paranoid

Il comando consente agli utenti regolari di utilizzare l'utilità perf nella sessione corrente.

3. Torna all'utente normale con:

exit

Per rendere persistenti le modifiche, procedi come segue:

1. Modifica il sysctl file di configurazione:

sudo nano /etc/sysctl.conf

2. Aggiungi quanto segue al file:

kernel.perf_event_paranoid = 0

3. Salva le modifiche ed esci da nano.

Sintassi del comando perf Linux

Il perf la sintassi del comando è:

perf <options> subcommand <options/arguments>

Lo strumento perf funziona come git. Funge da interfaccia per vari sottocomandi e diverse attività. L'esecuzione del comando senza opzioni o argomenti mostra l'elenco dei sottocomandi disponibili.

Linux perf sottocomandi

Di seguito è riportata una tabella che illustra perf di uso comune sottocomandi:

Sottocomando Descrizione
annotate Legge perf.data e mostra il codice annotato.
list Elenca tutti gli eventi misurabili.
stat Raccoglie le statistiche sulle prestazioni.
record Registra i campioni in perf.data .
report Legge perf.data e visualizza il profilo.
script Legge perf.data e visualizza l'output della traccia.
top Strumento di profilazione.

I sottocomandi hanno opzioni aggiuntive. Per visualizzare le opzioni per i singoli sottocomandi, eseguire:

perf <subcommand> -h

L'output visualizza una breve finestra di aiuto per il sottocomando specifico.

Esempi di comandi perf Linux

Per testare il perf comando, stiamo usando la piccola istanza BMC s0.d1 di phoenixNAP che esegue Ubuntu 18.04.

Nota: Per altri casi d'uso della piccola istanza BMC, consulta alcune delle nostre guide:

  • Configurazione di un firewall su un'istanza BMC s0.d1.small
  • Come configurare un bilanciamento del carico su un server BMC s0.d1.small
  • Configurazione di un ambiente sandbox su un'istanza BMC S.0

Quando si profila una CPU con il perf comando, il flusso di lavoro tipico consiste nell'utilizzare:

1. perf list per trovare gli eventi.

2. perf stat per contare gli eventi.

3. perf record per scrivere eventi in un file.

4. perf report per sfogliare il file registrato.

5. perf script per eseguire il dump degli eventi dopo l'elaborazione.

Le uscite differiscono in base al sistema e alle risorse disponibili localmente.

1. Elenca gli eventi disponibili

Elenca tutti gli eventi misurabili utilizzando perf con il list sottocomando:

sudo perf list

L'output elenca tutti gli eventi supportati, indipendentemente dal tipo. Senza sudo , il comando mostra un elenco più breve. Quando fai riferimento a eventi in altri sottocomandi, usa il -e tag seguito dal nome dell'evento dalla prima colonna.

Aggiungere il parametro filter dopo il comando per limitare l'elenco in base al nome dell'evento (prima colonna) o al tipo di evento (seconda colonna). Ad esempio, visualizza solo gli eventi hardware con:

sudo perf list hardware

O in alternativa:

sudo perf list hw

L'output mostra il risultato filtrato in base al parametro o ai parametri forniti.

2. Visualizza il profilo del sistema in tempo reale della CPU

Per visualizzare il profilo della CPU in tempo reale, utilizzare il top sottocomando:

sudo perf top

Il comando visualizza le funzioni campionate in tempo reale, in modo simile al comando top di Linux. L'output stampa le seguenti tre colonne in ordine da sinistra a destra:

1. Utilizzo della CPU legato a una funzione espressa in percentuale.

2. La libreria o il programma che sta utilizzando la funzione.

3. Il nome del simbolo e della funzione, dove [k] è lo spazio del kernel e [.] è lo spazio utente.

Per impostazione predefinita, perf top controlla tutte le CPU online. Opzioni aggiuntive consentono:

  • Monitoraggio di tutte le CPU (incluse quelle inattive) (-a ).
  • Monitoraggio di CPU specifiche (-C ).
  • Controllo della frequenza di campionamento (-F ).

Per visualizzare opzioni aggiuntive durante la modalità di navigazione, premi h .

Per uscire dal profiler e tornare al terminale, premi q .

3. Visualizza le statistiche sulle prestazioni della CPU con perf

Per visualizzare le statistiche sulle prestazioni della CPU per tutti gli eventi hardware e software standard a livello di CPU, eseguire:

sudo perf stat -a sleep 5

L'output mostra un rapporto dettagliato per l'intero sistema raccolto in cinque secondi. Senza sleep 5 , il sistema misura fino alla chiusura con CTRL +C .

4. Visualizza le prestazioni della CPU per un comando

Per controllare le statistiche sulle prestazioni della CPU per un comando specifico, esegui:

sudo perf stat <command>

Ad esempio, controlla il ls comando con:

sudo perf stat ls

Il tempo totale impiegato da un comando viene visualizzato come tempo trascorso alla fine dell'output.

5. Visualizza le prestazioni della CPU per un processo

Allega le statistiche sulle prestazioni della CPU a un processo in esecuzione specifico utilizzando il -p tag e fornendo l'ID del processo (PID):

sudo perf -p <PID> sleep 5

L'output raccoglie e visualizza le statistiche sulle prestazioni per il processo specificato.

6. Conta le chiamate di sistema di eventi per tipo

Per contare le chiamate di sistema del kernel Linux per tipo, esegui:

sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5

Dopo cinque secondi, l'output visualizza tutte le chiamate a livello di sistema e il relativo conteggio.

7. Registra i cicli della CPU

I cicli della CPU sono un evento hardware. Per registrare i cicli della CPU, usa il record sottocomando e fornisci il nome dell'evento con il -e tag:

sudo perf record -e cycles sleep 10

La registrazione salva i dati in un perf.data file. L'output stampa la dimensione del file e quanti campioni di dati contiene.

8. Visualizza i risultati delle prestazioni

Per visualizzare i risultati delle prestazioni da perf.data file, esegui:

sudo perf report

Il comando aiuta a leggere i perf.data file, visualizzando tutti gli eventi e le statistiche raccolti. Per uscire dal visualizzatore, premi CTRL +C .

9. Modifica il formato di output di esempio

Per visualizzare l'output di esempio nel formato di output standard, eseguire:

sudo perf report --stdio

Ulteriori modifiche includono la visualizzazione del numero del campione per ogni evento (-n ) e visualizzare colonne specifiche (--sort <column name> ). Ad esempio:

sudo perf report -n --sort comm,symbol --stdio

L'output aggiunge una colonna per il numero del campione e le informazioni sui comandi e sui simboli.

10. Visualizza output di traccia

Usa il script sottocomando per elencare tutti gli eventi da perf.dat un. Ad esempio:

sudo perf script

L'output stampa i perf.data dettagli in ordine di tempo. Usa il script sottocomando come dati di post-elaborazione.

11. Visualizza intestazione traccia

Per visualizzare tutti gli eventi da perf.data con ulteriori informazioni sull'intestazione della traccia, esegui:

sudo perf script --header

L'output mostra le informazioni sull'intestazione del file, ad esempio quando è stata avviata la traccia, per quanto tempo è durata, informazioni sulla CPU e il comando che ha recuperato i dati. L'elenco degli eventi è dopo le informazioni sull'intestazione.

12. Scarica i dati grezzi

Per scaricare dati grezzi come esadecimali da perf.data file, usa il -D opzione:

sudo perf script -D

Il risultato sono le informazioni grezze sulla traccia dell'evento in formato ASCII. L'opzione è utile per il debug degli eventi.

13. Annota i dati

Per annotare i dati e disassemblarli ulteriormente, utilizza il annotate sottocomando:

sudo perf annotate --stdio -v

Il -v l'opzione fornisce un output dettagliato. Il risultato mostra il codice sorgente e lo smontaggio degli eventi.

Conclusione

Dopo aver esaminato gli esempi in questa guida, conosci le basi dell'utilizzo di Linux perf comando e alcuni dei principali sottocomandi. Utilizzare il comando man per visualizzare la documentazione completa dello strumento di analisi delle prestazioni e dei sottocomandi.


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come creare un alias e utilizzare il comando alias in Linux

  4. Come utilizzare il comando id in Linux

  5. Come installare e utilizzare il comando Ping in Linux

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come installare e utilizzare il comando Ack in Linux

Come utilizzare il comando RPM in Linux

Come utilizzare il comando which in Linux