存在多个tmpfs,总的组合空间超过总内存

我有一个运行CentOS 7的7.5G内存的VPS,而且我没有做太多的优化工作,因为它的服务非常好。 今天我要为mysql临时表创build一个ramdisk,所以我想我应该先检查是否有任何ramdisk或tmpfs已经存在,我发现这个。

Filesystem Size Used Avail Use% Mounted on /dev/vda1 XXXG XXXG XXXG XX% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 324K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 783M 0 783M 0% /run/user/0 

我是一个普通的* nix用户,所以在我看来,已经有多个tmpfs,并且他们的组合最大限制实际上超过了我拥有的总内存。 所以我应该担心有多个tmpfs存在可以把所有可用的内存和机器的膝盖? 或者这些tmpfs是由操作系统本身创build的,不会产生任何问题。

更新1
@迈克尔。 看来我正在走向麻烦。 通过增加1G文件/run可用空闲内存减less1G,caching/caching增加1G。 所以这意味着如果有任何用户/包/脚本等设法在这些tmpfs中写入一些东西,系统可能会closures。 任何想法如何我可以回溯这些tmpfs并找出为什么/如何创build。

更新2
运行swapon -e返回

 NAME TYPE SIZE USED PRIO /dev/vda2 partition 8G 0B -1 

意味着我的天鹅实际上生活在记忆本身,这意味着如果系统试图使用SWAP将东西从记忆中移走,那么这些东西将会再次在记忆中结束,就在另一个地方。 所以任何build议来治愈这种情况。

关于这些tmpfs foldes来自哪里:

  • /dev/shm是一些Linux发行版的标准function。 这里shm代表“共享内存”。 这是一个默认创build的虚拟硬盘。 它有0 GB使用,表明你没有使用它。
  • /run/user/0与基于systemd的系统使用的模式相匹配,您似乎拥有该模式。 systemd允许您为运行的“服务单位”指定内存限制。 尝试使用sudo grep -R MemoryLimit /etc/systemd来查看是否find指定内存限制的单元文件。
  • 我相信/sys/fs/cgroup也是由systemd创build的 。

换句话说,看起来你已经创build了一些标准的RAM磁盘,如果你试图一次性把它们全部填满的话,这些RAM磁盘恰巧会超配你的内存。 我不担心这些文件的存在,因为它们几乎都不用在你的“截图”中。

如果要限制特定应用程序的内存使用情况, systemd可以很容易地根据“服务”来限制它。 阅读如何在/etc/systemd下的“服务单元”configuration文件中使用MemoryLimit 。