操作系统释放缓存 RAM 的速度和效率如何?

操作系统释放缓存 RAM 的速度和效率如何?

我知道“免费 RAM 是浪费 RAM”的概念。我的问题是操作系统如何快速有效地释放缓存的 RAM,以便应用程序在使用高峰时拥有足够的 RAM。

我们有一个在 Linux 上托管的 Web 应用程序。我们通常有 10-20% 的内存利用率。但当调用代码的某些部分时,我们看到峰值高达约 100%。(代码已进行最大优化)。我想在发生这种情况时触发电子邮件。我应该编写一个脚本来监视内存利用率(包括缓存还是仅监视应用程序内存)?

当Linux中出现Out of Memory错误时,是否意味着缓存内存为零并且所有RAM已分配给应用程序?

答案1

操作系统如何快速有效地释放缓存 RAM,以便应用程序在使用高峰时拥有足够的 RAM?

除非您在 Linux 上使用 ZFS,而 ARC 可能无法快速收缩以吸收突然的 RAM 需求,否则内核释放缓存所花费的时间可以忽略不计,正如 Kusalananda 已经评论的那样。

我应该编写一个脚本来监视内存利用率(包括缓存还是仅监视应用程序内存)?

我会监视应用程序内存和系统内存。当减少缓存以为应用程序内存腾出空间时,性能可能会下降,因为需要更多磁盘 I/O。

当Linux中出现Out of Memory错误时,是否意味着缓存内存为零并且所有RAM已分配给应用程序?

当发生内存不足时,大多数缓冲区/缓存已被释放/刷新,但这并不意味着全部内存由应用程序使用。一部分内存仍然由内核使用,也可能是基于 RAM 的文件系统或直接由某些硬件使用。

相关内容