【问题标题】:inotifywait secretely consumes a lot of memoryinotifywait 偷偷消耗大量内存
【发布时间】:2020-09-01 22:04:08
【问题描述】:

在 Ubuntu 14.04 上:

$ cat /proc/sys/fs/inotify/max_queued_events
16384
$ cat /proc/sys/fs/inotify/max_user_instances
128
$ cat /proc/sys/fs/inotify/max_user_watches
1048576

计算机重新启动后,我消耗了 1GB 的 RAM。 20-30 分钟后(只打开了 1 个终端),我使用了 6GB RAM 并且还在增长,但是似乎没有一个进程使用这么多内存(根据 htoptop) .当我杀死inotifywait 时,进程内存没有被释放但停止增长。然后我重新启动 PC,立即杀死 inotifywait,内存使用停止在 1GB。

我有 2 个硬盘,一个是 1TB,第二个是 2TB。 inotifywait 是否以某种方式缓存了这些行为,或者一般来说,它导致这种行为是否正常?

【问题讨论】:

    标签: ubuntu-14.04 inotifywait


    【解决方案1】:

    这是the Linux disk cache at work,它不是inotifywait 或其他任何地方的内存泄漏。

    【讨论】:

      【解决方案2】:

      我接受了之前的答案,因为它解释了发生了什么。但是,我对这个话题有一些第二个想法。该页面的基本意思是“缓存不占用内存,因为这段内存随时都可以收回,所以你不应该担心,你不应该恐慌,你应该心存感激!”。嗯......我不是。我相信缓存应该有一些不错但同时也有硬性限制。

      这个过程背后的想法是好的 -> “让我们不要浪费用户时间并缓存所有内容,直到我们有空间”。然而,在我的情况下,这个过程实际上在做的是浪费我的时间。目前我正在使用在虚拟机中运行的 Linux。由于我打开了很多 jira 页面,许多桌面中的很多终端,打开了一些工具等等,我不想每天都打开所有这些东西,所以我只是保存虚拟机状态而不是在结束时将其关闭那天。现在假设我的东西占用 4GB RAM。将会发生的情况是,在我保存状态后将 4GB 写入我的硬盘驱动器,然后在我启动虚拟机时必须将 4GB 加载到 RAM 中。不幸的是,这只是理论。实际上,由于 inotifywait 会很高兴地填满我的 32 GB RAM,我必须等待 8 倍的时间来保存和恢复虚拟机。是的,正如页面所说,我的 RAM “很好”,是的,我可以打开不同的应用程序,我不会遇到 OOM,但同时缓存正在浪费我的时间。

      如果限制是不错的,比如说 1GB 用于缓存,那么它就不会那么痛苦了。我认为如果我在 HDD 上而不是 SSD 上使用 VM,那么保存状态需要很长时间,而且我可能根本不会使用它。

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        • 2015-09-07
        • 1970-01-01
        • 2011-08-14
        • 2018-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多