操作系统:Ubuntu 16.04
free
输出显示大约 2GB 共享内存。共享内存在经过一段时间后仍然被分配登出,并且列表中没有特定进程top
占用它。
ipcs -m
没有表明此消耗有任何单一过程(或总和)。
sync
或者sysctl vm.drop_caches={1..3}
没有减少共享内存。 (只有预期的缓存)
事实上,我知道该问题是由于错误尝试使用 写入块设备而引起的dd
,这导致在中创建物理文件/dev/
(请参阅答案)。
以供参考:
> grep ' /dev ' /proc/mounts
udev /dev devtmpfs rw,nosuid,relatime,size=1941504k,nr_inodes=485376,mode=755 0 0
一般需要采取哪些步骤来找出占用共享内存的内容?
答案1
原因是我在 dd 命令中输入错误,写入物理文件 /dev/mmcblk1:
> ll /dev/mmcblk*
-rw-r--r-- 1 root root 1.9G 2017-11-03 18:09 /dev/mmcblk1
brw-rw---- 1 root disk 179, 0 2017-11-03 18:10 /dev/mmcblk2
取出SD卡并注意到错误后,我删除了物理文件,缓存使用量下降了2GB。
重现示例:
> free -h
total used free shared buff/cache available
Mem: 3.7G 1.7G 919M 163M 1.2G 1.6G
> sudo dd if=/dev/zero of=/dev/BIG bs=1M count=700 status=progress
700+0 records in
700+0 records out
734003200 bytes (734 MB, 700 MiB) copied, 0.743527 s, 987 MB/s
> free -h
total used free shared buff/cache available
Mem: 3.7G 1.7G 221M 859M 1.8G 982M
> sudo rm /dev/BIG
> free -h
total used free shared buff/cache available
Mem: 3.7G 1.7G 904M 160M 1.2G 1.6G