0

在 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以某种方式缓存了这些,或者通常它导致这种行为是否正常?

4

2 回答 2

1

这是正在工作的 Linux 磁盘缓存,它不是内存泄漏inotifywait或其他任何问题。

于 2020-08-03T17:38:20.650 回答
-1

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

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

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

于 2020-09-01T14:04:08.217 回答