Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in...

22
Profiling Pompeo Faruolo

Transcript of Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in...

Page 1: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Profiling

Pompeo Faruolo

Page 2: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Profiling Tracciare il profilo del comportamentale

di un PROCESSO in funzione delle risorse utilizzate

Come il Sistema Operativo esegue il processo

Page 3: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Risorse Conteggiate

Tempo Cpu Memoria IO (file, stampanti, etc..) Canali di comunicazione

Page 4: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Profiling tradizionale

Il campionamento dei tempi in ambiente Unix prende come riferimento il clock di sistema

• Command Shell sampling

• time

• Embedded source-level sampling

• times(…)

• getitimer(…)/setitimer(…)

Page 5: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time

time [-apvV] [-f format] [-o file] [--append] [--portability] [--verbose] [--format=format] [--output-file=file] [--version] command [arg...]

time esegue command, ed alla fine dell’esecuzione mostra le risorse utilizzate

Conteggia le risorse solo del processo lanciato escludendo i figli

Page 6: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: statistiche dei tempi

Tempo reale trascorso tra l’inizio del processo fino alla sua terminazione

Numero totale di secondi di CPU utilizzati dal processo(in user-mode)

Numero totale di secondi di CPU utilizzati dal sistema per gestire il processo(in kernel-mode)

Percentuale di uso di CPU• %CPU = (UserTime + SystemTime) / RealTime

Page 7: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: statistiche della memoria

Memoria media utilizzita Massima memoria utilizzata Tagli media dei dati condvisi Taglia media dei dati non-condivisi Numero di page fault Numero di context switch

Page 8: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: statistiche dell’IO

Numero di file system output aperti Numero di file system input aperti Numero di messaggi su socket inviati Numero di messaggi su socket ricevuti Numero di segnali ricevuti Valore di exit del processo

Page 9: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: esempi

Processo CPU intensive• for( i=0; i<300000000; i++) ;

Processo IO intensive• for( i=0; i<20000; i++)

printf("%d\n",i);

Processo MIX• for( i=0; i<5000; i++) { for( j=0; j<50000; j++); printf("%d\n",j); }

Page 10: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: esempi

CPU IO MIX

User 3.55 0.02 2.39

System 0.02 0.14 0.04

Real 3.67 3.09 3.92

%CPU 97% 5% 61%

Statistiche a macchina scarica

Page 11: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: esempi

CPU IO MIX

User 3.44 0.04 2.54

System 0.00 0.05 0.04

Real 7.00 6.26 6.67

%CPU 49% 1% 38%

Statistiche rilevate con un processo CPU intensive concorrente

Page 12: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

time: esempi

CPU IO MIX

User 2.88 0.02 3.05

System 0.01 0.02 0.07

Real 32.54 31.84 35.08

%CPU 8% 0% 8%

Statistiche rilevate con 10 processi CPU intensive concorrenti

Page 13: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Profiling a livello macchina

Aumentiamo il grado di dettaglio delle statistiche rilevate

Registriamo come una porzione di codice interagisce con l’architettura sottostante

Page 14: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Parametri rilevati Total cycles Total instructions Floating point operations Load/store instructions Cycles functional units are idle Cycles stalled

• waiting for memory access• waiting for resource

Conditional branch instructions• executed• Mispredicted

Cache miss

Page 15: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Hardware Performance Counter

Le moderne CPU integrano questo hardware dedicato per il conteggio dell’avvenimento di un particolare evento

Quando un particolare evento accade viene lanciato automaticamente un segnale che incrementa il relativo registro

Page 16: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Funzionamento hardware

REGISTRI CONTATORI

CACHE L1

CACHE L2

BUS

CPU HPC

Page 17: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Gestione HPC

HPC necessitano di driver aggiuntivi perché non supportati dai sistemi operativi

Questi moduli aggiuntivi costituiscono il tramite tra l’hardware e l’utente

Page 18: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Performance API

Lo scopo di PAPI è progettare, standardizzare e implementare una interfaccia indipendente dalla piattaforma per accedere agli HPC dei vari processori

Page 19: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Funzionamento software

Java Monitor GUI

PAPI Low LevelPAPI High Level

Hardware Performance Counter

Operating System

Kernel ExtensionPAPI Machine Dependent SubstrateMachine

SpecificLayer

PortableLayer

Page 20: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

PAPI high level

int PAPI_num_counters(void)

int PAPI_start_counters(int *events, int array_len)

int PAPI_read_counters(long long *values, int array_len)

int PAPI_accum_counters(long long *values, int array_len)

int PAPI_stop_counters(long long *values, int array_len)

Page 21: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Latenze della mamoria (indicative)

CPU register: 0 cycles L1 cache hit: 2-3 cycles L1 cache miss satisfied by L2 cache hit: 8-12

cycles L2 cache miss satisfied from main memory, no

TLB miss: 75-250 cycles TLB miss requiring only reload of the TLB:

~2000 cycles TLB miss requiring reload of virtual page –

page fault: hundreds of millions of cycles

Page 22: Profiling Pompeo Faruolo. Profiling Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate Come il Sistema Operativo.

Utilizzo HPC

CPU design Monitorare politiche di scheduling di un

SO Compilatori Profiling di algoritmi