Descubra onde a memória alocada para um processo reside

0

Eu gostaria de investigar onde a memória de um processo específico está alocada.

Para ser mais específico: Estou executando um binário paralelo Fortran do OpenMP em uma máquina ccNUMA com duas CPUs físicas. Minha preocupação é que esse programa viole a primeira regra de toque ao inicializar suas variáveis. Isso levaria a alocação de memória de maneira não balanceada, ou seja, a maior parte da memória seria alocada no espaço de endereço de apenas uma CPU física, em vez de equilibrá-la entre as duas CPUs. Por sua vez, isso levaria a um fraco dimensionamento para esse aplicativo limitado de largura de banda de memória.

Infelizmente, não tenho acesso ao código-fonte. Então, olhar para a alocação de memória parece ser uma boa maneira de descobrir. Outras idéias são bem vindas.

Editar devido a comentários: OpenSUSE Leap 42.3, kernel versão 4.4.103-36-default

    
por MechEng 30.04.2018 / 11:35

1 resposta

1

No Linux, você pode consultar o espaço de endereço virtual de algum processo usando proc (5) & pmap (1) .

Portanto, para o processo 1234, execute cat /proc/1234/maps , pmap 1234 , cat /proc/1234/numa_maps

Veja também numa (7) , numa_maps(5) , set_mempolicy (2) , numactl (8) .

    
por 02.05.2018 / 11:44