/ 在内存中吗?AWS/EC2 Ubuntu Server 14.04 LTS (HVM)

/ 在内存中吗?AWS/EC2 Ubuntu Server 14.04 LTS (HVM)

我已经研究这个问题有一段时间了,我真的很困惑。

我有一个运行 Ubuntu Server 14.04 LTS(HVM)、SSD 卷类型 - ami-d05e75b8 的 AWS/EC2 m3.medium 实例。

我遇到了一个问题,即写入大型临时文件导致/tmp实例内存不足。经过进一步调查,似乎问题并不局限于/tmp

min-memory由于我在 watchdog.conf 中进行了设置,因此这导致实例重新启动。

我可以通过这样做来复制该问题:

root@ip-172-31-3-68:/# cat /proc/meminfo | grep MemFree
MemFree:         3543808 kB
root@ip-172-31-3-68:/# dd if=/dev/zero of=/deleteme bs=10000 count=100000
100000+0 records in
100000+0 records out
1000000000 bytes (1.0 GB) copied, 5.71321 s, 175 MB/s
root@ip-172-31-3-68:/# cat /proc/meminfo | grep MemFree
MemFree:         2537896 kB
root@ip-172-31-3-68:/# sync
root@ip-172-31-3-68:/# cat /proc/meminfo | grep MemFree
MemFree:         2537812 kB
root@ip-172-31-3-68:/# rm /deleteme
root@ip-172-31-3-68:/# cat /proc/meminfo | grep MemFree
MemFree:         3541040 kB

以下是 mount 所说的内容:

root@ip-172-31-3-68:/# mount
/dev/xvda1 on / type ext4 (rw,discard)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)

和 fstab:

root@ip-172-31-3-68:/# cat /etc/fstab
LABEL=cloudimg-rootfs   /    ext4   defaults,discard    0 0

这是怎么回事?为什么我的文件被存储在内存中?

答案1

好吧,我搞明白了。fromMemFree测量/proc/meminfo系统中未使用的内存量,不区分类型。这与在min-memory中设置时看门狗守护进程查看的内容完全相同watchdog.conf。写入文件时,操作系统页面缓存会保存我正在写入的数据,以防需要再次使用。页面缓存中的内存是可回收的,但看门狗守护进程并不关心。它只关心未使用的内存。

这基本上意味着我无法使用min-memorywatchdog.conf这令人失望。

相关内容