profiling pompeo faruolo. profiling tracciare il profilo del comportamentale di un processo in...
Post on 02-May-2015
216 Views
Preview:
TRANSCRIPT
Profiling
Pompeo Faruolo
Profiling Tracciare il profilo del comportamentale
di un PROCESSO in funzione delle risorse utilizzate
Come il Sistema Operativo esegue il processo
Risorse Conteggiate
Tempo Cpu Memoria IO (file, stampanti, etc..) Canali di comunicazione
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(…)
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
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
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
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
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); }
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
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
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
Profiling a livello macchina
Aumentiamo il grado di dettaglio delle statistiche rilevate
Registriamo come una porzione di codice interagisce con l’architettura sottostante
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
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
Funzionamento hardware
REGISTRI CONTATORI
CACHE L1
CACHE L2
BUS
CPU HPC
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
Performance API
Lo scopo di PAPI è progettare, standardizzare e implementare una interfaccia indipendente dalla piattaforma per accedere agli HPC dei vari processori
Funzionamento software
Java Monitor GUI
PAPI Low LevelPAPI High Level
Hardware Performance Counter
Operating System
Kernel ExtensionPAPI Machine Dependent SubstrateMachine
SpecificLayer
PortableLayer
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)
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
Utilizzo HPC
CPU design Monitorare politiche di scheduling di un
SO Compilatori Profiling di algoritmi
top related