【发布时间】:2019-05-18 11:14:59
【问题描述】:
在 ubuntu 容器(也包括其他发行版)中创建文件会导致内核内存增长。除非文件被删除,否则内存不会减少。 这是预期的行为吗?创建文件的进程停止时内存不会减少。
很容易复制。
- 使用来自最新 ubuntu 映像的卷创建 docker 实例
- 使用以下命令登录实例并在该卷内创建文件:
for i in {1..100000}; do dd if=/dev/urandom bs=4096 count=1 of=file$i; done - 查看文件/sys/fs/cgroup/memory/memory.kmem.usage_in_bytes
kmem 将会增长。 我需要了解为什么,在程序执行相同操作的情况下避免或减轻这种行为:创建一组文件
【问题讨论】:
-
似乎它可能正在缓存 - unix.stackexchange.com/questions/82820/…
-
我再次测试了缓存和没有缓存,内核内存在这两种情况下都会增长。查看 /sys/fs/cgroup/memory/memory.kmem.slabinfo ,增长的值是 fuse_inode 和 dentry。这些值在创建文件时会增长,这听起来很符合逻辑
-
但我希望在这些文件关闭后释放这些对象
标签: linux docker memory-leaks linux-kernel