OProfile é uma ferramenta de monitoramento de desempenho do sistema, com baixa sobrecarga. Utiliza o hardware de monitoramento de desempenho no processador para recuperar informações sobre o kernel e executáveis do sistema. Por exemplo: quando a memória é referenciada, traz o número de pedidos do cache L2 e o número de interrupções de hardware recebidas. Em um sistema Red Hat Enterprise Linux, o pacote RPM oprofile deve estar instalado para usar esta ferramenta.
Muitos processadores incluem hardware de monitoramento do desempenho. Este hardware possibilita detectar quando determinados eventos ocorrem (como quando os dados requisitados não estão no cache). O hardware normalmente toma a forma de um ou mais contadores que são aumentados cada vez que ocorre um evento. Quando o valor do contador "adia", é gerada uma interrupção, possibilitando controlar a quantidade de detalhes (e consequentemente de sobrecarga) produzida pelo monitoramento do desempenho.
O OProfile usa este hardware (ou um substituto baseado em timer nos casos em que não há hardware de monitoramento de desempenho) para coletar amostras de dados relacionados ao desempenho cada vez que um contador gera uma interrupção. Estas amostras são gravadas periodicamente no disco; posteriormente, os dados contidos nestas amostras podem então ser usados para gerar relatórios de desempenho dos sistemas e aplicações.
![]() | Importante |
---|---|
O suporte ao kernel do OProfile no Red Hat Enterprise Linux 3 é baseado no código do kernel 2.5 em desenvolvimento. Quando nos referimos à documentação do OProfile, as funcionalidades específicas da versão 2.5 se aplicam ao OProfile do Red Hat Enterprise Linux 3, apesar da versão do kernel ser 2.4. Do mesmo modo, as funcionalidades do OProfile específicas do kernel 2.4 não se apicam ao Red Hat Enterprise Linux 3. |
O OProfile é uma ferramenta útil, mas saiba de algumas limitações ao utilizá-lo:
Uso de bibliotecas compartilhadas — Amostras de código em bibliotecas compartilhadas não são atribuídos a uma determinada aplicação a não ser que a opção --separate=library seja usada.
As amostras de monitoramento do desempenho são imprecisas — Quando o registro do monitoramento de desempenho ativa uma amostra, a resolução da interrupção não é precisa como uma exceção 'divide by zero'. Devido à execução fora de ordem das instruções pelo processador, a amostra pode ser gravada em uma instrução próxima.
oprofpp não associa amostras apropriadamante para funções em linha — o oprofpp usa um mecanismo de intervalo de endereço simples para determinar em qual função um endereço se encontra. As amostras de função em linha não são atribuídas à função em linha, mas sim à função na qual a função em linha estava inserida.
OProfile acumula dados de diversas execuções (runs) — O OProfile é um perfilador do sistema e espera que os processos liguem e desliguem diversas vezes. Portanto, as amostras de diversas execuções são acumuladas. Use o comando opcontrol --reset para limpar as amostras de execuções anteriores.
Problemas de desempenho não são limitados à CPU — O OProfile é orientado para encontrar problemas com processos limitados à CPU. OProfile não identifica processos adormecidos (asleep) porque estes aguardam bloqueios (locks) ou a ocorrência de algum outro evento (como o dispositivo I/O finanlizar uma operação).
No Red Hat Enterprise Linux, somente os kernels de multi-processador (multi-processor, SMP) têm o suporte ao OProfile habilitado. Para determinar qual kernel está rodando, invoque o seguinte comando:
uname -r |
Se a versão do kernel retornada termina em .entsmp, o kernel do multi-processador está rodando. Caso contrário, instale-o via Red Hat Network ou pelos CDs da distribuição, mesmo se o sistema não for multi-processador. O kernel multi-processador pode rodar em um sistema de processador simples.
A Tabela 43-1 traz uma visão geral das ferramentas oferecidas com o pacote oprofile.
Comando | Decrição |
---|---|
opcontrol | Configura quais dados são coletados. Consulte a Seção 43.2 para mais detalhes. |
op_help | Exibe eventos disponíveis do processador do sistema junto a uma breve descrição de cada. |
op_merge | Mistura diversas amostras do mesmo executável. Consulte a Seção 43.5.4 para mais detalhes. |
op_time | Oferece uma visão geral de todos os executáveis perfilados. Consulte a Seção 43.5.1 para mais detalhes. |
op_to_source | Cria uma fonte anotada para um executável se a aplicação foi compilada com símbolos de depuração. Consulte a Seção 43.5.3 para mais detalhes. |
oprofiled | Roda como um daemon para gravar dados da amostra no disco periodicamente. |
oprofpp | Recupera dados do perfil. Consulte a Seção 43.5.2 para mais detalhes. |
op_import | Converte o arquivo do banco de dados de amostras de um formato diferente para o formato nativo do sistema. Use esta opção somente ao analisar um banco de dados de amostras de uma arquitetura diferente. |
Tabela 43-1. Comandos do OProfile