Questo è il comando perf-report che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
perf-report - Leggi perf.data (creato da perf record) e visualizza il profilo
SINOSSI
perf rapporto [-io | --input=file]
DESCRIZIONE
Questo comando visualizza le informazioni sul profilo del contatore delle prestazioni registrate tramite perf
record.
VERSIONI
-i, --input=
Nome del file di input. (predefinito: perf.data a meno che stdin non sia una fifo)
-v, --verboso
Sii più prolisso. (mostra indirizzo simbolo, ecc.)
-n, --show-nr-campioni
Mostra il numero di campioni per ogni simbolo
--show-cpu-utilizzo
Mostra la percentuale del campione per le diverse modalità della CPU.
-T, --fili
Mostra contatori di eventi per thread. Il file di dati di input deve essere registrato con l'opzione -s.
-c, --comms=
Considera solo i simboli in queste comunicazioni. CSV che capisce file://nomefile le voci.
Questa opzione influirà sulla percentuale della colonna delle spese generali. Vedi --percentuale per
Ulteriori informazioni.
--pid=
Mostra solo gli eventi per un determinato ID processo (elenco separato da virgole).
--tid=
Mostra solo gli eventi per l'ID thread specificato (elenco separato da virgole).
-d, --dsos=
Considera solo i simboli in questi dso. CSV che capisce file://nomefile le voci.
Questa opzione influirà sulla percentuale della colonna delle spese generali. Vedi --percentuale per
Ulteriori informazioni.
-S, --simboli=
Considera solo questi simboli. CSV che capisce file://nomefile inserimenti. Questa opzione
influenzerà la percentuale della colonna in testa. Vedi --percentuale per maggiori informazioni.
--filtro-simbolo=
Mostra solo i simboli che corrispondono (parzialmente) a questo filtro.
-U, --hide-irrisolto
Visualizza solo le voci risolte in un simbolo.
-s, --sort=
Ordina le voci dell'istogramma in base alle chiavi fornite: è possibile specificare più chiavi in formato CSV.
Sono disponibili le seguenti chiavi di ordinamento: pid, comm, dso, symbol, parent, cpu, socket,
srcline, peso, local_weight.
Ogni tasto ha il seguente significato:
· comm: comando (nome) dell'attività che può essere letto tramite / proc //com
· pid: comando e tid del compito
· dso: nome della libreria o del modulo eseguito al momento del campionamento
· simbolo: nome della funzione eseguita al momento del campione
· genitore: nome della funzione abbinata al filtro regex genitore. Le voci non corrispondenti sono
visualizzato come "[altro]".
· cpu: numero di cpu eseguito dall'attività al momento del campionamento
· socket: numero di socket del processore eseguito dall'attività al momento del campionamento
· srcline: nome file e numero di riga eseguiti al momento del campione. Il nano
devono essere fornite le informazioni di debug.
· srcfile: nome del file sorgente dello stesso. Richiede informazioni nane.
· peso: peso specifico dell'evento, ad es. latenza della memoria o costo dell'interruzione della transazione. Questo
è il peso globale.
· local_weight: versione del peso locale del peso sopra.
· transazione: flag di interruzione della transazione.
· spese generali: percentuale di spese generali del campione
· overhead_sys: percentuale di overhead del campione in esecuzione in modalità di sistema
· overhead_us: percentuale di overhead del campione in esecuzione in modalità utente
· overhead_guest_sys: percentuale di overhead del campione in esecuzione in modalità di sistema su guest
macchina
· overhead_guest_us: percentuale di overhead del campione in esecuzione in modalità utente su guest
macchina
· campione: numero di campioni
· periodo: numero grezzo di conteggio eventi del campione
Per impostazione predefinita, vengono utilizzati i tasti comm, dso e dei simboli.
(cioè --sort comm,dso,symbol)
Se viene utilizzata l'opzione --branch-stack, vengono utilizzate anche le seguenti chiavi di ordinamento
disponibile:
dso_from, dso_to, symbol_from, symbol_to, previsione errata.
· dso_from: nome della libreria o del modulo derivato da
· dso_to: nome della libreria o del modulo ramificato a
· symbol_from: nome della funzione derivata da
· symbol_to: nome della funzione ramificata a
· mispredict: "N" per il ramo previsto, "Y" per il ramo non previsto
· in_tx: filiale nella transazione TSX
· abort: interruzione della transazione TSX.
· cicli: Cicli nel blocco base
E le chiavi di ordinamento predefinite vengono cambiate in comm, dso_from, symbol_from, dso_to
e symbol_to, vedi '--branch-stack'.
-F, --campi=
Specifica campo di output: è possibile specificare più chiavi in formato CSV. Campi seguenti
sono disponibili: overhead, overhead_sys, overhead_us, overhead_children, sample e
periodo. Inoltre può contenere qualsiasi chiave di ordinamento.
Per impostazione predefinita, verranno aggiunte tutte le chiavi di ordinamento non specificate in -F
automaticamente.
Se viene utilizzata l'opzione --mem-mode, sono disponibili anche le seguenti chiavi di ordinamento
(incompatibile con --branch-stack):
symbol_daddr, dso_daddr, bloccato, tlb, mem, snoop, dcacheline.
· symbol_daddr: nome del simbolo di dati in esecuzione al momento del campionamento
· dso_daddr: nome della libreria o del modulo contenente i dati su cui si esegue l'
tempo del campione
· bloccato: se il bus era bloccato al momento del campione
· tlb: tipo di accesso tlb per i dati al momento del campionamento
· mem: tipo di accesso alla memoria per i dati al momento del campionamento
· snoop: tipo di snoop (se presente) per i dati al momento del campionamento
· dcacheline: la cacheline su cui si trova l'indirizzo dati al momento del campionamento
E le chiavi di ordinamento predefinite vengono cambiate in local_weight, mem, sym, dso,
symbol_daddr, dso_daddr, snoop, tlb, bloccato, vedere '--mem-mode'.
-p, --parent=
Un filtro regex per identificare il genitore. Il genitore è un chiamante di questa funzione e
cercato attraverso la callchain, quindi richiede la registrazione delle informazioni sulla callchain. Il
pattern è nel formato regex esteso e il valore predefinito è "^sys_|^do_page_fault", vedere
--ordinare genitore.
-x, --exclude-altro
Visualizza solo le voci con corrispondenza principale.
-w, --column-widths=
Forza ogni larghezza di colonna nell'elenco fornito, per una maggiore leggibilità del terminale. 0 significa
nessun limite (comportamento predefinito).
-t, --separatore-campo=
Usa un carattere separatore speciale e non riempire con spazi, sostituendo tutte le occorrenze
di questo separatore nei nomi dei simboli (e altri output) con a . carattere, che così
è l'unico separatore non valido.
-D, --dump-raw-traccia
Scarica la traccia grezza in ASCII.
-g, --call-graph=
Visualizza le catene di chiamate utilizzando il tipo, la soglia percentuale minima, il limite di stampa, l'ordine delle chiamate, l'ordinamento
chiave e ramo. Nota che l'ordinamento dei parametri non è fisso, quindi qualsiasi parametro può essere
dato in arbitrato. Un'eccezione è print_limit che dovrebbe essere preceduto
per soglia.
print_type può essere:
- flat: singola colonna, esposizione lineare delle catene di chiamata.
- grafico: utilizza un albero grafico, che mostra i tassi di sovraccarico assoluti. (predefinito)
- frattale: come il grafico, ma mostra i tassi relativi. Ogni ramo di
l'albero viene considerato come un nuovo oggetto profilato.
- nessuno: disabilita la visualizzazione della catena di chiamate.
soglia è un valore percentuale che specifica una percentuale minima da essere
incluso nel grafico delle chiamate in uscita. Il valore predefinito è 0.5 (%).
print_limit viene applicato solo quando viene utilizzata l'interfaccia stdio. è per limitare
numero di voci del grafico delle chiamate in una singola voce di cronologia. Nota che ha bisogno
da dare dopo la soglia (ma non necessariamente consecutiva).
Il valore predefinito è 0 (illimitato).
l'ordine può essere:
- chiamato: grafico della chiamata basato sul chiamato.
- chiamante: grafico di chiamata basato sul chiamante invertito.
L'impostazione predefinita è "chiamante" quando viene utilizzato --children, altrimenti "chiamato".
sort_key può essere:
- function: confronta sulle funzioni (predefinito)
- indirizzo: confronto sui singoli indirizzi di codice
ramo può essere:
- filiale: include le informazioni dell'ultima filiale nel callgraph quando disponibile.
Di solito è più comodo usare --branch-history per questo.
--figli
Accumula la catena di chiamate dei bambini all'ingresso dei genitori in modo che possano essere visualizzati nel
produzione. L'output avrà una nuova colonna "Bambini" e verrà ordinato in base ai dati.
Richiede che le catene di chiamata siano registrate. Per ulteriori informazioni, vedere la sezione "Calcolo delle spese generali"
dettagli.
--max-pila
Imposta il limite di profondità dello stack durante l'analisi della callchain, qualsiasi cosa oltre il valore specificato
la profondità verrà ignorata. Questo è un compromesso tra la perdita di informazioni e più veloce
elaborazione in particolare per i carichi di lavoro che possono avere uno stack di callchain molto lungo. Nota
che quando si utilizza l'opzione --itrace la dimensione della callchain sintetizzata sovrascriverà questo
valore se la dimensione della callchain sintetizzata è maggiore.
Predefinito: 127
-G, --invertito
alias per il grafico delle chiamate basato sul chiamante invertito.
--ignore-chiamati=
Ignora i chiamati delle funzioni che corrispondono alla regex data. Questo ha l'effetto di
raccogliendo i chiamanti di ciascuna di queste funzioni in un posto nell'albero del grafo delle chiamate.
--carino=
Stile di stampa grazioso. chiave: normale, grezza
--stdio
Usa l'interfaccia stdio.
--tu
Utilizzare l'interfaccia TUI, che è integrata con annotate e consente lo zoom nei DSO
o thread, tra le altre caratteristiche. L'uso di --tui richiede una tty, se non è presente,
come quando si esegue il reindirizzamento ad altri comandi, viene utilizzata l'interfaccia stdio.
--gtk
Usa l'interfaccia GTK2.
-k, --vmlinux=
vmlinux percorso nome
--kallsyms=
nome del percorso di kallsyms
-m, --moduli
Caricare i simboli del modulo. ATTENZIONE: Questo dovrebbe essere usato solo con -k e un kernel LIVE.
-f, --forza
Non lamentarti, fallo.
--symfs=
Cerca i file con i simboli relativi a questa directory.
-C, --cpu
Riportare solo esempi per l'elenco di CPU fornito. Più CPU possono essere fornite come a
elenco separato da virgole senza spazio: 0,1. Gli intervalli di CPU sono specificati con -: 0-2.
L'impostazione predefinita è riportare i campioni su tutte le CPU.
-M, --disassemblatore-stile=
Imposta lo stile del disassemblatore per objdump.
--fonte
Interlacciare il codice sorgente con il codice assembly. Abilitato per impostazione predefinita, disabilita con
--nessuna fonte.
--asm-raw
Mostra la codifica delle istruzioni non elaborate delle istruzioni di assemblaggio.
--mostra-totale-periodo
Mostra una colonna con la somma dei periodi.
-Io, --show-info
Visualizza informazioni estese sul file perf.data. Questo aggiunge informazioni che potrebbero
essere molto grande e quindi potrebbe ingombrare il display. Attualmente include: cpu e numa
topologia del sistema ospite.
-b, --stack-diramazioni
Utilizzare gli indirizzi dei rami prelevati campionati invece dell'indirizzo dell'istruzione per
costruire gli istogrammi. Per generare un output significativo, il file perf.data deve essere stato
ottenuto usando perf record -b o perf record --branch-filter xxx dove xxx è un ramo
opzione filtro. perf report è in grado di rilevare automaticamente se un file perf.data contiene
stack di rami e passerà automaticamente alla modalità di visualizzazione dei rami, a meno che
--no-branch-stack viene utilizzato.
--storia-filiale
Aggiungere gli indirizzi dei rami acquisiti campionati allo stack di chiamate. Questo permette di esaminare
il percorso che il programma ha seguito per ogni campione. La raccolta dati deve aver utilizzato -b (o
-j) e -g.
--objdump=
Percorso per objdump binario.
--gruppo
Mostra insieme le informazioni sul gruppo di eventi.
--demaglia
Smantella i nomi dei simboli in una forma leggibile dall'uomo. È abilitato per impostazione predefinita, disabilita con
--no-demanle.
--demanle-kernel
Smantella i nomi dei simboli del kernel in un formato leggibile dall'uomo (per i kernel C++).
--mem-modalità
Utilizzare gli indirizzi dei dati dei campioni oltre agli indirizzi delle istruzioni per costruire il
istogrammi. Per generare un output significativo, è necessario aver ottenuto il file perf.data
usando perf record -d -W e usando un evento speciale -e cpu/mem-loads/ o -e
cpu/mem-stores/. Vedere perf mem per un accesso più semplice.
--limite percentuale
Non mostrare le voci che hanno un sovraccarico inferiore a tale percentuale. (Predefinito: 0).
--percentuale
Determinare come visualizzare la percentuale di sovraccarico delle voci filtrate. I filtri possono essere
applicato dalle opzioni --comms, --dsos e/o --symbols e dalle operazioni di Zoom sulla TUI
(filo, dso, ecc.).
"relativo" significa che è relativo solo alle voci filtrate in modo che il
la somma delle voci mostrate sarà sempre 100%. "assoluto" significa che mantiene
il valore originale prima e dopo l'applicazione del filtro.
--intestazione
Mostra le informazioni di intestazione nel file perf.data. Questo include varie informazioni come
nome host, versione del sistema operativo e delle prestazioni, informazioni su cpu/mem, riga di comando delle prestazioni, elenco eventi e così via.
Attualmente solo l'output --stdio supporta questa funzione.
--solo-intestazione
Mostra solo l'intestazione perf.data (forces --stdio).
--ittrace
Opzioni per la decodifica dei dati di tracciamento delle istruzioni. Le opzioni sono:
sintetizzo istruzioni eventi
b sintetizzare gli eventi dei rami
c sintetizzare eventi rami (solo chiamate)
r sintetizzare eventi rami (solo ritorni)
x sintetizzare gli eventi delle transazioni
e sintetizzare eventi di errore
d creare un registro di debug
g sintetizzare una catena di chiamate (usare con i o x)
l sintetizzare le ultime voci del ramo (usare con i o x)
Il valore predefinito è tutti gli eventi, ovvero lo stesso di --itrace=ibxe
Inoltre, il periodo (default 100000) per gli eventi delle istruzioni
può essere specificato in unità di:
io istruzioni
t tick
ms millisecondi
noi microsecondi
ns nanosecondi (predefinito)
Anche la dimensione della catena di chiamate (default 16, max. 1024) per istruzioni o
gli eventi delle transazioni possono essere specificati.
Anche il numero delle ultime voci del ramo (default 64, max. 1024) per
istruzioni o eventi di transazione possono essere specificati.
Per disabilitare completamente la decodifica, usa --no-itrace.
--percorso-fonte-completo
Mostra il percorso completo per i file di origine per l'output srcline.
--show-ref-call-graph
Quando vengono campionati più eventi, potrebbe non essere necessario raccogliere callgraph per tutti
di loro. I siti di campionamento sono di solito nelle vicinanze ed è sufficiente raccogliere il
callgraph su un evento di riferimento. Quindi l'utente può usare il modificatore di evento "call-graph=no" per
disabilitare callgraph per altri eventi per ridurre l'overhead. Tuttavia, il rapporto perfetto non può
mostra i callgraph per l'evento che disabilita il callgraph. Questa opzione estende il
rapporto perf per mostrare i callgraph di riferimento, raccolti per evento di riferimento, in no
evento callgrafico.
--filtro-presa
Riportare solo i campioni sul socket del processore che corrispondono a questo filtro
SOGGIORNO CALCOLO
L'overhead può essere mostrato in due colonne come Bambini e Auto quando perf raccoglie
catene di chiamata. Il auto l'overhead viene semplicemente calcolato sommando tutti i valori di periodo del
voce - di solito una funzione (simbolo). Questo è il valore che perf mostra tradizionalmente e
somma di tutti i auto i valori generali dovrebbero essere 100%.
. bambini l'overhead viene calcolato aggiungendo tutti i valori di periodo delle funzioni figlio così
che può mostrare l'overhead totale delle funzioni di livello superiore anche se non lo fanno
eseguire direttamente molto. Bambini qui significa funzioni che vengono chiamate da un altro (genitore)
funzione.
Potrebbe essere fonte di confusione che la somma di tutti i bambini i valori generali superano il 100% poiché
ognuno di loro è già un accumulo di auto sovraccarico delle sue funzioni figlie. Ma con
questo abilitato, gli utenti possono trovare quale funzione ha il maggior sovraccarico anche se i campioni sono
sparsi sui bambini.
Considera il seguente esempio; ci sono tre funzioni come di seguito.
.ft C
vuoto foo (vuoto) {
/* fare qualcosa */
}
barra del vuoto (vuoto) {
/* fare qualcosa */
pippo();
}
int principale (vuoto) {
sbarra()
0 ritorno;
}
.ft
In questo caso foo è figlio di bare bar è un figlio immediato di principale so foo anche è un
figlio di principale. In altre parole, principale è un genitore di foo e bare bar è un genitore di
foo.
Supponiamo che tutti i campioni siano registrati in foo e bar soltanto. Quando è registrato con le catene di chiamata
l'output mostrerà qualcosa come sotto nel solito output (solo self-overhead) di perf
relazione:
.ft C
Simbolo in alto
........ ........................
60.00% di cibo
|
--- pippo
bar
principale
__libc_start_main
Barra del 40.00%.
|
--- sbarra
principale
__libc_start_main
.ft
Quando l'opzione --children è abilitata, il auto valori generali delle funzioni figlie (ad es
foo e bar) vengono aggiunti ai genitori per calcolare il bambini in testa. In questo caso il
il rapporto potrebbe essere visualizzato come:
.ft C
Simbolo di sé dei bambini
........ ........ ...................
100.00% 0.00% __libc_start_main
|
--- __libc_start_main
100.00% 0.00% principale
|
--- principale
__libc_start_main
100.00% 40.00% bar
|
--- sbarra
principale
__libc_start_main
60.00% 60.00% piselli
|
--- pippo
bar
principale
__libc_start_main
.ft
Nell'output di cui sopra, il auto sovraccarico di foo (60%) è stato aggiunto al bambini sovraccarico di
bar, principale e __libc_start_main. Allo stesso modo, il auto sovraccarico di bar (40%) è stato aggiunto al
bambini sovraccarico di principale e \_\_libc_start_main.
So \_\_libc_start_main e principale sono mostrati per primi poiché hanno lo stesso (100%) bambini
spese generali (anche se hanno zero auto in alto) e sono i genitori di foo e
bar.
Dalla v3.16 il bambini l'overhead è mostrato per impostazione predefinita e l'output è ordinato in base al suo
valori. Il bambini l'overhead è disabilitato specificando l'opzione --no-children sul
riga di comando o aggiungendo report.bambini = falso or top.bambini = falso nella perfezione
file di configurazione.
Usa perf-report online utilizzando i servizi onworks.net