为了防止OOM杀手运行,我设置了vm.overcommit_memory =2和vm.overcommit_ratio = 100。我想知道一个给定的进程提交了多少内存,这个进程对提交计数有贡献。
它不是常驻工作集,因为常驻工作集不包括交换的金额。它也不是虚拟大小,因为虚拟大小包括mmap()ed文件,这些文件对提交限制没有贡献。
发布于 2012-11-07 15:06:33
为进程的ID运行pmap -x PID以显示内存分配。
[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发布于 2012-11-07 15:14:21
您可以查看内核文档中的成本图。简而言之,共享匿名或/dev/zero映射只计算它们的大小一次,而私有可写映射对每个实例只计算一次。
您可以使用pmap准确地查看某个进程是什么以及如何映射。pmap -d生成的输出包含一个页脚行,其中包含私有可写映射的总聚合大小。
https://serverfault.com/questions/446318
复制相似问题