Como posso descobrir a quantidade de memória COMMITED por um processo no Linux?

4

Para evitar que o killer da OOM seja executado, configurei vm.overcommit_memory = 2 e vm.overcommit_ratio = 100. Eu gostaria de saber quanta memória está comprometida por um dado processo, o que é contribuído para a contagem de commits.

Não é o conjunto de trabalho residente, uma vez que o conjunto de trabalho residente não inclui o valor trocado. Também não é o tamanho virtual, já que o tamanho virtual inclui arquivos mmap () ed, que não contribuem para o limite de confirmação.

    
por Michael Tsang 07.11.2012 / 15:47

2 respostas

2

Execute pmap -x PID para o ID do processo para mostrar a alocação de memória.

[root@ObamaBiden ~]# pmap -x 8106
8106:   /opt/dbcfs/dbcfsrun 10.51.64.76 4483 /opt/dbcfs/dbcfs.cfg 9584:1 -ssl
Address           Kbytes     RSS   Dirty Mode   Mapping
0000000000266000     120      96       0 r-x--  ld-2.12.so
0000000000284000       4       4       4 r-x--  ld-2.12.so
0000000000285000       4       4       4 rwx--  ld-2.12.so
0000000000288000    1584     388       0 r-x--  libc-2.12.so
0000000000414000       8       8       8 r-x--  libc-2.12.so
0000000000416000       4       4       4 rwx--  libc-2.12.so
0000000000417000      12       8       8 rwx--    [ anon ]
0000000008048000     912     624       0 r-x--  dbcfsrun
000000000812c000      56      44      36 rwx--  dbcfsrun
000000000813a000     152      60      60 rwx--    [ anon ]
0000000008a51000     280     132     132 rwx--    [ anon ]
00000000f678c000   16008    5396    5396 rwx--    [ anon ]
00000000f7739000       4       4       4 rwx--    [ anon ]
00000000f773a000       4       4       0 r-x--    [ anon ]
00000000ffd8a000      84      32      32 rwx--    [ stack ]
----------------  ------  ------  ------
total kB           19236    6808    5688
    
por 07.11.2012 / 16:06
0

Você pode ver o mapa de custos na documentação do kernel. Em suma, os mapas anônimos ou /dev/zero compartilhados contam apenas para o tamanho deles, enquanto os mapas graváveis particulares contam uma vez para cada instância.

Você pode usar pmap para ver exatamente o que um determinado processo está mapeando e como. A saída gerada por pmap -d contém uma linha de rodapé com o tamanho agregado total de mapas graváveis privados.

    
por 07.11.2012 / 16:14

Tags