我想知道系统中当前正在使用的共享内存,因此运行以下命令:

ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x50040150 2195456    user-owner  660        65648      2
0x00000000 2228225    user-owner  660        32768      1
0x00000000 2260994    user-owner  660        1052672    1
0x00000000 2293763    user-owner  660        57304      2
0x00000000 2326532    user-owner  660        98256      1
0x00000000 2359301    user-owner  660        53184      1
0x00000000 2392070    user-owner  660        98416      2
0x00000000 2424839    user-owner  660        98416      2
0x00000000 2457608    user-owner  660        672000     2
0x00000000 2490377    user-owner  660        672000     2
0x00000000 2523146    user-owner  660        672000     2
0x00000000 2555915    user-owner  660        672000     2
0x00000000 2588684    user-owner  660        672000     2
0x00000000 2621453    user-owner  660        672000     2
0x00000000 2654222    user-owner  660        672000     2
0x00000000 2686991    user-owner  660        672000     2
0x43040150 2719760    user-owner  660        304        1
0x00000000 2752529    user-owner  660        32768      1
0x00000000 2785298    user-owner  660        266240     1
0x00000000 2818067    user-owner  660        49104      1
0x00000000 2850836    user-owner  660        167920     2
0x00000000 2883605    user-owner  660        102384     2
0x013352ab 720918     user-owner  666        4096       2

-->共享内存总量7555480字节=7555.48 kB
然后运行cat/proc/meminfo | grep-i
cat /proc/meminfo |grep -i shmem<br/>
Shmem:             21592 kB

如我所见,ipcs-m中的共享内存总量之间存在一个缺口,我无法理解哪个进程正在使用这个缺口
你能帮我一下吗?
谢谢你

最佳答案

shmem包含多个ipc共享内存段,例如ramdisk。
/proc/pid/statm-第三个字段指示进程有多少共享内存页。示例代码:

cd /proc
for i in `ls -d * | grep -v self`
do
  if [[ -f $i/statm ]];then
     echo -n "$i "; cat $i/statm | perl -lan -e 'print ($F[2] * 4096)';
  fi
done | sort -nr -k2 | head

4096是getconf PAGESIZE的页面大小
https://lists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/008628.html
还有更多的可能性。

关于linux - 找出哪个进程正在使用共享内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40712097/

10-10 17:44
查看更多