我执行了这个命令来创建 RAM-Disk:
mount -t tmpfs -o size=60G tmpfs /tmp/ramdisk
之后,我将几个文件复制到该虚拟文件系统中,如下所示:
cp /mnt/user/hugefile.bin /tmp/ramdisk/hugefile.bin
cp /mnt/user/hugefile2.bin /tmp/ramdisk/hugefile2.bin
cp /mnt/user/hugefile3.bin /tmp/ramdisk/hugefile3.bin
然后,最后一个cp
命令冻结,CPU 负载达到最大值。我认为是因为 RAM 磁盘的大小大于可用内存。我用 CTRL+C 打断了它。
一段时间后,我删除了安装的 RAM-Disk,如下所示:
umount /tmp/ramdisk
但这就是我现在的问题,它没有释放共享内存:
free -g
total used free shared buff/cache available
Mem: 62 0 0 53 61 7
Swap: 0 0 0
正如您所看到的,虚拟内存的使用率并不高:
df -BG | grep tmpfs
tmpfs 1G 1G 1G 1% /run
devtmpfs 32G 0G 32G 0% /dev
tmpfs 32G 0G 32G 0% /dev/shm
tmpfs 1G 1G 1G 1% /var/log
tmpfs 4G 0G 4G 0% /tmp/plextranscode
我发现这个提示使用来ipcs
分析用法,但结果为空:
ipcs
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
我发现这个解决方案也是如此,但我担心会杀死其他进程的数据。难道就没有更选择性的解决方案吗?
答案1
我也找到了这个解决方案,但我担心会杀死其他进程的数据。难道就没有更选择性的解决方案吗?
echo 3 > /proc/sys/vm/drop_caches
不会也不可能杀死任何进程或对您的系统造成任何损害 - 它只是从缓存中逐出所有内容,不是共享内存。ipcs
与你的问题也没有关系。
tmpfs
确实占用共享内存,但卸载tmpfs
挂载点必须自动释放共享内存。为什么你没有遇到这种情况,我不知道。
我相信您/tmp/ramdisk
仍然已安装,但由于某些原因df
没有显示。
reboot
将解决您的问题。