1 / 22

Profiling

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.

albina
Download Presentation

Profiling

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Profiling Pompeo Faruolo

  2. Profiling • Tracciare il profilo del comportamentale di un PROCESSO in funzione delle risorse utilizzate • Come il Sistema Operativo esegue il processo

  3. Risorse Conteggiate • Tempo • Cpu • Memoria • IO (file, stampanti, etc..) • Canali di comunicazione

  4. 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(…)

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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); }

  10. time: esempi Statistiche a macchina scarica

  11. time: esempi Statistiche rilevate con un processo CPU intensive concorrente

  12. time: esempi Statistiche rilevate con 10 processi CPU intensive concorrenti

  13. Profiling a livello macchina • Aumentiamo il grado di dettaglio delle statistiche rilevate • Registriamo come una porzione di codice interagisce con l’architettura sottostante

  14. 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

  15. 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

  16. CACHE L2 CACHE L1 BUS CPU HPC REGISTRI CONTATORI Funzionamento hardware

  17. 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

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

  19. Java Monitor GUI PAPI Low Level PAPI High Level Portable Layer PAPI Machine Dependent Substrate Machine Specific Layer Kernel Extension Operating System Hardware Performance Counter Funzionamento software

  20. 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)

  21. 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

  22. Utilizzo HPC • CPU design • Monitorare politiche di scheduling di un SO • Compilatori • Profiling di algoritmi

More Related