OProfile è un tool di controllo della prestazione dell'intero sistema, ed è caratterizzato da un overhead basso. Il suddetto tool usa un hardware di controllo della prestazione sul processore, per riprendere le informazioni sul kernel e degli eseguibili presenti sul sistema, come ad esempio quando ci si riferisce alla memoria, al numero delle richieste della cache L2, e al numero delle interruzioni hardware ricevuto. Per poter usare questo tool su di un sistema Red Hat Enterprise Linux, il pacchetto RPM oprofile deve essere installato.
Molti processori includono un apposito hardware di controllo della prestazione. Questo hardware è in grado di rilevare la presenza di alcuni eventi (come ad esempio l'assenza in una cache, di dati richiesti). L'hardware normalmente viene rappresentato da uno o più contatori, che vengono incrementati ogni qualvolta si verifica un evento. Quando il valore del contatore "varia," viene generata una interruzione, rendendo possibile un controllo della quantità dei dettagli (e quindi dell'overhead) forniti grazie al controllo della prestazione.
OProfile usa questo hardware (oppure un sostituto basato sul timer, in casi dove non è presente un hardware di controllo della prestazione) per raccogliere degli esempi di dati relativi alla prestazione, ogni volta che un contatore genera una interruzione. Questi esempi sono registrati periodicamente su di un disco; più in avanti i dati contenuti in questi esempi, possono essere usati per generare dei riporti sulla prestazione a livello del sistema e delle applicazioni.
![]() | Importante |
---|---|
Il supporto del kernel per OProfile in Red Hat Enterprise Linux 3, è basato su di un codice di tipo back-ported del kernel di sviluppo 2.5. Quando si indica la documentazione di OProfile, vengono applicate a OProfile in Red Hat Enterprise Linux 3 i contenuti-2.5, anche se la versione del kernel è 2.4. I contenuti specifici del kernel 2.4 non vengono applicati a Red Hat Enterprise Linux 3. |
OProfile è un tool utile ma fate attenzione alle sue limitazioni quando lo usate:
Uso di librerie condivise — Esempi di codice presenti nelle librerie condivise, non sono attribuiti ad una particolare applicazione a meno che non viene usata l'opzione --separate=library.
Gli esempi di controllo della prestazione sono inesatti — Quando un registro di controllo della prestazione provoca un esempio, la gestione dell'interruzione non è precisa come una eccezione di tipo zero divide. A causa della non disponibilità della esecuzione delle istruzioni da parte del processore, l'esempio può essere registrato su di una istruzione vicina.
oprofpp non associa correttamente gli esempi per le funzioni inline — oprofpp usa un meccanismo semplice di gamma dell'indirizzo, per determinare in quale funzione è presente l'indirizzo. Gli esempi di funzione inline non sono attribuiti alla funzione inline, ma alla funzione nella quale essa è stata inserita.
OProfile accumula dati da esecuzioni multiple — OProfile è un profiler dell'intero sistema ed accetta i processi per ripetute attivazioni e spegnimenti. In questo modo si accumulano esempi dovuti ad esecuzioni multiple. Usare il comando opcontrol --reset per cancellare gli esempi da esecuzioni precedenti.
Problemi di prestazione non limitati al CPU — OProfile è orientato in modo tale da riuscire a rilevare i problemi con i processi limitati al CPU. Esso non identifica però i processi così detti 'addormentati', in quanto essi sono inattesa di un lock o della verifica di un evento (per esempio la fine di una operazione da parte di un dispositivo I/O).
In Red Hat Enterprise Linux è abilitato il supporto OProfile solo per i kernel di processori multipli (SMP). Per determinare quale kernel è in esecuzione, emettere il seguente comando:
uname -r |
Se la versione del kernel ritornata finisce in .entsmp, ciò significa che il kernel dei processori multipli è in esecuzione. Altrimenti installatelo tramite Red Hat Network o tramite i CD di distribuzione, anche se il sistema non è un sistema con processori multipli. Il kernel dei processori multipli può essere eseguito su di un sistema con un singolo processore.
Tabella 43-1 fornisce una breve panoramica dei tool forniti con il pacchetto oprofile.
Comando | Descrizione |
---|---|
opcontrol | Configura i dati da raccogliere. Consultare la Sezione 43.2 per maggiori informazioni. |
op_help | Mostra gli eventi disponibili per il processore del sistema insieme con una loro breve descrizione. |
op_merge | Unisce esempi multipli dello stesso eseguibile. Consultare la Sezione 43.5.4 per maggiori informazioni. |
op_time | Fornisce una panoramica di tutti i profili presenti. Consultare la Sezione 43.5.1 per maggiori informazioni. |
op_to_source | Genera la fonte annotata per un eseguibile se l'applicazione è stata compilata con i simboli del debugging. Consultate la Sezione 43.5.3 per maggiori informazioni. |
oprofiled | Viene eseguito come un demone per registrare periodicamente su disco dei dati d'esempio. |
oprofpp | Riprende i dati del profilo. Consultate la Sezione 43.5.2 per maggiori informazioni. |
op_import | Converte l'esempio dei file del database da un formato binario diverso in un formato nativo per il sistema. Usare questa opzione solo quando si analizza un esempio del database da un'architettura diversa. |
Tabella 43-1. I comandi di OProfile