5.3.3. Heap do Perfil e Espaço de Pilha com Massif
Massif mede o espaço de pilha usado por um programa específico, tanto o espaço útil quanto qualquer espaço adicional alocado para fins de contabilidade e alinhamento. Ele pode ajudá-lo a reduzir a quantidade de memória utilizada pelo seu programa, o que pode aumentar a velocidade do seu programa, e reduzir a probabilidade de que seu programa irá esgotar o espaço de troca da máquina em que ele executa. Massif também pode fornecer detalhes sobre quais partes do seu programa são responsáveis pela alocação de memória heap. Programas executados com Massif são executados com cerca de vinte vezes mais lentidão do que a sua velocidade de execução normal.
Para realizar o perfil do uso do heap de um programa, especifique o
massif
como uma ferramenta Valgrind que você deseja utilizar:
# valgrind --tool=massif program
Dados de perfil coletados pelo Massif são gravados em um arquivo, que por padrão é chamado de
massif.out.pid
, onde pid é o ID de processo do programa especificado.
Estes dados de perfil também podem ser grafados com o comando
ms_print
, assim como:
# ms_print massif.out.pid
Isso produz um gráfico que mostra o consumo de memória sobre a execução do programa, e informações detalhadas sobre os locais responsáveis pela alocação em vários pontos do programa, incluindo no ponto de alocação de memória de pico.
Massif fornece um número de opções de linha de comando que podem ser usados para dirigir a saída da ferramenta. Algumas das opções disponíveis são:
--heap
- Especifica se deve realizar perfil de heap. Este valor padrão é
yes
. O perfil do Heap pode ser desabilitado configurando esta opção parano
. --heap-admin
- Especifica o número de bytes por bloco a usar para a administração quando um perfil de heap for habilitado. O valor padrão é
8
bytes por bloco. --stacks
- Especifica se deve criar o perfil da pilha. O valor padrão é
no
(desabilitado). Para habilitar perfis de pilha, definir esta opção parayes
, mas esteja ciente de que isso desacelera o Massif. Observe também que Massif assume que a pilha principal tem tamanho zero na inicialização para indicar melhor o tamanho da porção da pilha sobre a qual o programa que está sendo perfilado tem controle. --time-unit
- Especifica a unidade de tempo utilizado para a criação de perfil. Há três valores válidos para esta opção: instruções executadas (
i
), o valor padrão, que é útil na maioria dos casos, tempo real (ms
, em milissegundos), que pode ser útil em certos casos, e bytes alocados / desalocado na pilha e / ou stack (B
), que é útil para os programas de muito curto prazo, e para fins de teste, porque é o mais reproduzível em máquinas diferentes. Esta opção é útil ao criar gráficos de resultado de Massif comms_print
.
Para uma lista completa de opções consulte a documentação incluída em
/usr/share/doc/valgrind-version/valgrind_manual.pdf
.