2012-12-17 18 views
5

Quando ho digitato il comando perf list, ho trovato che esistono due tipi di eventi: Hardware event e Hardware cache Event. Qual è la differenza tra i due?Qual è la differenza tra evento hardware e cache hardware Evento in perf?

Qual è la differenza tra cache-misses e LLC-misses? Le manchevolezze della cache includono perdite di LLC?

Gli strumenti perf riducono le prestazioni totali quando eseguo il test di un programma?

risposta

1

Secondo la man page della chiamata di sistema perf_event_open (utilizzato internamente da perf utilità di livello utente):

  • eventi hardware: Questo indica uno degli eventi hardware "generalizzate" forniti dal kernel
  • hardware eventi cache: indica un evento cache hardware.

Più sopra mi chiedo se questo ha qualche legame con quello che viene chiamato eventi non architettoniche e architettoniche in [Intel® 64 e Manuale IA-32 Architetture dello sviluppatore di software 3B] Intel® 64 e IA-32 Architetture Software Developer Manuale 3B 2.

Indipendentemente dal significato esatto di questa categorizzazione, cache-misses come dichiarato here in a previous question e nella pagina di manuale che ho citato sopra, rappresenta il numero di accesso alla memoria che non poteva essere servito da una delle cache. Detto in modo diverso, significa il numero di errori di cache nella cache di ultimo livello. Di conseguenza, suppongo che questo sia lo stesso di LLC-misses, sfortunatamente non sono in grado di confermarlo sul mio laptop perché LLC-misses non è supportato.

Per quanto riguarda l'ultima domanda, l'overhead dovuto al monitoraggio delle prestazioni dovrebbe essere molto basso. Infatti, l'overhead è principalmente dovuto alla lettura dei valori del contatore e usando perf stat suppongo che questa lettura debba essere eseguita solo una volta alla fine dell'esecuzione (considerando che i contatori non escono troppo)

2

Domanda 2: Se guardo il codice del kernel ARM ("arch/braccio/kernel/perf_event_v7.c") per perf

cache-miss significa ARMV7_PERFCTR_L1_DCACHE_REFILL che significa prima dei dati a livello di cache miss Così LLC probabilmente significa cache miss di basso livello (L3 probabilmente)

È possibile osservare il codice kernel specifico dell'architettura quale valore ARMV7_PERFCTR_L1_DCACHE_REFILL ha E il manuale tecnico di riferimento per sapere cosa significa esattamente quel valore. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/BEHCCEAE.html

Domanda 3: Credo perf letture contatori da registri hardware (almeno per i contatori delle prestazioni HW) così abituato davvero influenzare le prestazioni del vostro codice. Dato che in realtà non mette i hook del codice all'interno del tuo codice. Ma alcuni articoli dicono che c'è una penalità di prestazioni del 5% se usi perf nel codice.

Problemi correlati