Os processos em execução em um sistema operacional são alocados para diferentes regiões que utilizam um espaço de memória virtual mapeado para a memória física em uma camada de abstração. O kernel preserva assim uma tabela de tradução destacando cada processo, e quaisquer alterações feitas são atualizadas na tabela de tradução. O comando PMAP é necessário para acessar esse espaço de memória usado por cada processo e, neste guia, você aprenderá como usar o comando pmap para visualizar o uso da memória por um processo.”
Como usar o PMAP
A sintaxe para usar o PMAP é:
PMAP [Opções] PID […]
Portanto, a primeira coisa a fazer é obter o ID do processo de um processo específico, e existem maneiras diferentes de obter o PID. Para obter rapidamente o PID de um processo, use o PS aux e depois grep o nome do processo ou use a opção PIDOF.
Por exemplo, para obter o PID do processo Bash:
1. Usando PS Aux
$ ps aux | BASH GREP
2. Usando pidof
$ PIDOF BASH
Usando
PMAP para obter o uso da memória de um único processo
Agora que você tem o PID do seu processo de destino, você pode verificar o uso da memória usando o comando abaixo.
$ PMAP 4959
A saída será:
A partir da saída, você pode ver que a primeira linha destaca o nome do processo, neste caso, Bash e seu ID do processo. As próximas linhas começam com o endereço de memória mapeado, seguido pelo tamanho da memória do endereço de memória específico em Kilobytes.
Os outros personagens representam as permissões da memória virtual, analisadas abaixo.
r: implica que o processo pode ler a memória mapeada.
c: implica que o processo pode escrever na memória mapeada.
x: implica que o processo pode executar instruções na memória mapeada.
Usando o PMAP para obter o uso da memória de vários processos
O comando PMAP é usado com vários PIDs separados por um espaço para obter seu uso de memória. Por exemplo, se você tiver Pids 1818, 1741 e 4959, o comando será:
$ PMAP 1818 1741 4959
A saída é semelhante a um único processo, exceto que o uso da memória será separado por cada processo, como mostrado abaixo.
Para a saída do próximo processo:
Obtendo uma saída PMAP estendida
Para obter um formato estendido do uso da memória, adicione -x ao comando PMAP, como no exemplo abaixo.
$ PMAP -X 4959
A saída estendida do comando será:
Você notará que alguns campos extras são exibidos com a saída estendida. Cada um dos campos representa informações de uso de memória diferentes.
Endereço: Representa o endereço inicial do mapeamento.
Kbytes: Este é o tamanho do espaço de memória virtual.
RSS: Este é o tamanho do conjunto residente representado em Kilobytes.
Sujo: as páginas sujas compartilhadas e privadas expressas em Kilobytes.
Modo: as permissões do mapa.
Mapeamento: este é o arquivo que apóia o mapa e pode ser '[Stack]' ou '[anon]'.
PMAP Mostrar formato de dispositivo
A opção -d, quando usada com PMAP, produz o formato do dispositivo associado ao processo específico.
$ PMAP -D 4959
Mais dois campos são adicionados à saída.
Desvio: Representa o deslocamento do arquivo se a memória for baseada em arquivo.
Dispositivo: o formato do dispositivo.
PMAP exibe tudo
A opção -x exibe a saída estendida. No entanto, você pode mostrar tudo o que o kernel pode obter sobre o uso da memória de um processo adicionando a opção -x.
$ PMAP -X 4959
Outras opções de PMAP
1. Pegue o caminho completo
Para obter o caminho completo dos arquivos:
$ PMAP -P 4959
2. Ignore os nomes das colunas
Se você deseja excluir os nomes das colunas ao exibir o relatório de saída, por exemplo, ao obter o nome do dispositivo:
$ PMAP -QD 4959
3. Obtenha a versão PMAP
Para ver a versão PMAP atual:
$ PMAP -V
4. Página de ajuda do PMAP
Para abrir a página de ajuda do PMAP.
$ PMAP - -Help
Conclusão
Ao trabalhar com o Linux, entender o gerenciamento de memória pode ser complicado. Felizmente, com a ajuda do comando PMAP, você pode obter a imagem completa do que acontece na memória. Um comando PMAP é uma ótima ferramenta para quem lida com mapas de memória de processo. Este guia cobriu o uso comum do comando PMAP Linux para você começar.