Como posso saber se um vazamento de memória está no espaço do usuário ou no espaço do kernel?

4

Eu tenho um grande aplicativo open-source multi-threaded que usa bibliotecas OpenGL proprietárias, Wayland Weston, e um driver gráfico proprietário no kernel do Linux. Os drivers estão atualmente em desenvolvimento, então há uma strong possibilidade de que eles tenham erros.

Eu observei os seguintes sintomas:

  1. A memória livre ( free -m ) é consumida continuamente durante a execução do meu aplicativo. Em um estado estável, consome cerca de 1 MB / 5 minutos.

  2. Se eu parar e iniciar meu aplicativo continuamente, posso acelerar a taxa de perda de memória. Parece que eu perco cerca de 0,5 MB toda vez que eu reinicio o aplicativo.

  3. Quando interrompo meu aplicativo, a memória não é retornada ao sistema. A memória é retornada somente após um ciclo de energia.

  4. Eu comecei a registrar o uso da memória, bem como tirar instantâneos de /proc/<pid>/smaps . Eu posso ver qual segmento consome a memória e vou investigar mais.

  5. A

    inspeção do arquivo smaps mostra que, com o tempo, o instantâneo mais antigo consumiu mais memória. Também há mais anon_inode:dmabuf entradas no instantâneo mais antigo, e isso é semelhante a esses problemas:

    link

    link

É mais provável que esse vazamento de memória seja um vazamento de memória do espaço do usuário ou um vazamento de memória do kernel?

Que outros diagnósticos posso realizar para diminuir a provável fonte de vazamentos?

    
por Mr Stinky 13.10.2018 / 21:57

1 resposta

1

O aplicativo está fazendo alguma alocação de memória anônima através de mmap ()?
Quaisquer dados ou arquivos de log sendo gravados em um disco RAM? Tem tópicos que estão constantemente começando e terminando? Manipulando as terminações de thread corretamente? (Estive lá, achei isso como um vazamento.) Se você esperar um pouco, o uso da memória do kernel cairá quando as estruturas dinâmicas forem lançadas?

Eu colocaria as chances de quem está vazando memória em 99% a favor do aplicativo.

    
por 14.10.2018 / 06:11